You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by fg...@apache.org on 2026/04/24 14:02:38 UTC
(nifi-minifi-cpp) 02/02: MINIFICPP-2768 use gcc-toolset-14 on rocky
This is an automated email from the ASF dual-hosted git repository.
fgerlits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit f34d739bc5ca4f898310f2354c8ff3a2317aa1d7
Author: Martin Zink <ma...@apache.org>
AuthorDate: Fri Apr 24 12:36:31 2026 +0200
MINIFICPP-2768 use gcc-toolset-14 on rocky
compiler support changes: gcc 13, clang 17
removed: expected-lite and other gcc12 workarounds
Signed-off-by: Ferenc Gerlits <fg...@gmail.com>
Closes #2155
---
.github/workflows/ci.yml | 4 +-
.github/workflows/compiler-support.yml | 8 +-
CMakeLists.txt | 10 -
LICENSE | 28 -
NOTICE | 1 -
README.md | 4 +-
cmake/Bustache.cmake | 7 +-
cmake/Coroutines.cmake | 22 -
cmake/Couchbase.cmake | 13 +-
cmake/CppVersion.cmake | 8 +-
cmake/ExpectedLite.cmake | 28 -
cmake/Protobuf.cmake | 4 +-
cmake/fmt.cmake | 4 +-
controller/Controller.cpp | 12 +-
controller/Controller.h | 2 +-
controller/tests/ControllerTests.cpp | 2 +-
core-framework/CMakeLists.txt | 5 +-
core-framework/common/CMakeLists.txt | 5 +-
.../common/include/utils/OptionalUtils.h | 6 +-
core-framework/common/include/utils/ParsingUtils.h | 44 +-
core-framework/common/include/utils/StringUtils.h | 8 +-
.../utils/detail/MonadicOperationWrappers.h | 4 +-
core-framework/common/include/utils/expected.h | 62 +-
core-framework/common/src/utils/ParsingUtils.cpp | 38 +-
core-framework/common/src/utils/StringUtils.cpp | 4 +-
.../include/core/ConfigurableComponentImpl.h | 20 +-
.../core/controller/ControllerServiceBase.h | 4 +-
core-framework/include/utils/file/FileUtils.h | 6 +-
core-framework/include/utils/file/PathUtils.h | 12 +-
core-framework/include/utils/net/DNS.h | 6 +-
.../src/core/ConfigurableComponentImpl.cpp | 42 +-
core-framework/src/core/Property.cpp | 18 +-
core-framework/src/utils/Cron.cpp | 12 +-
core-framework/src/utils/file/FileUtils.cpp | 4 +-
core-framework/src/utils/net/DNS.cpp | 10 +-
docker/rockylinux/Dockerfile | 9 +-
extension-framework/CMakeLists.txt | 5 +-
.../include/api/core/ProcessContext.h | 6 +-
.../cpp-extension-lib/src/core/ProcessContext.cpp | 4 +-
extensions/aws/processors/PutKinesisStream.cpp | 14 +-
extensions/aws/processors/PutKinesisStream.h | 4 +-
extensions/civetweb/processors/ListenHTTP.h | 4 +-
extensions/couchbase/CMakeLists.txt | 15 +-
.../controllerservices/CouchbaseClusterService.cpp | 26 +-
.../controllerservices/CouchbaseClusterService.h | 12 +-
extensions/couchbase/tests/CMakeLists.txt | 4 +
.../couchbase/tests/MockCouchbaseClusterService.h | 8 +-
extensions/elasticsearch/PostElasticsearch.cpp | 24 +-
extensions/grafana-loki/PushGrafanaLoki.h | 2 +-
extensions/grafana-loki/PushGrafanaLokiGrpc.cpp | 6 +-
extensions/grafana-loki/PushGrafanaLokiGrpc.h | 2 +-
extensions/grafana-loki/PushGrafanaLokiREST.cpp | 6 +-
extensions/grafana-loki/PushGrafanaLokiREST.h | 2 +-
extensions/kubernetes/MetricsApi.cpp | 4 +-
extensions/kubernetes/MetricsApi.h | 2 +-
extensions/kubernetes/MetricsFilter.cpp | 8 +-
extensions/kubernetes/MetricsFilter.h | 2 +-
.../llamacpp/processors/DefaultLlamaContext.cpp | 8 +-
.../llamacpp/processors/DefaultLlamaContext.h | 2 +-
extensions/llamacpp/processors/LlamaContext.h | 2 +-
.../llamacpp/tests/RunLlamaCppInferenceTests.cpp | 4 +-
extensions/mqtt/processors/PublishMQTT.cpp | 2 +-
extensions/opc/include/putopc.h | 2 +-
extensions/opc/src/putopc.cpp | 24 +-
extensions/python/types/PyRecordSetReader.cpp | 2 +-
extensions/rocksdb-repos/FlowFileLoader.cpp | 2 +-
extensions/smb/SmbConnectionControllerService.cpp | 8 +-
extensions/smb/SmbConnectionControllerService.h | 4 +-
.../utils/MockSmbConnectionControllerService.h | 6 +-
extensions/smb/tests/utils/TempSmbShare.h | 4 +-
extensions/sql/CMakeLists.txt | 2 +-
extensions/standard-processors/CMakeLists.txt | 2 -
.../controllers/JsonTreeReader.cpp | 24 +-
.../controllers/JsonTreeReader.h | 2 +-
.../standard-processors/controllers/XMLReader.cpp | 4 +-
.../standard-processors/controllers/XMLReader.h | 2 +-
.../standard-processors/modbus/FetchModbusTcp.cpp | 28 +-
.../standard-processors/modbus/FetchModbusTcp.h | 6 +-
.../modbus/ReadModbusFunctions.cpp | 14 +-
.../modbus/ReadModbusFunctions.h | 10 +-
.../processors/ConvertRecord.cpp | 5 +-
.../standard-processors/processors/InvokeHTTP.cpp | 6 +-
.../standard-processors/processors/InvokeHTTP.h | 2 +-
.../standard-processors/processors/PutUDP.cpp | 8 +-
.../standard-processors/processors/SplitRecord.cpp | 7 +-
.../standard-processors/processors/SplitRecord.h | 2 +-
.../standard-processors/processors/SplitText.cpp | 22 +-
.../standard-processors/tests/CMakeLists.txt | 2 -
.../tests/integration/InvokeHTTPTests.cpp | 4 +-
extensions/standard-processors/utils/JoltUtils.cpp | 88 +-
extensions/standard-processors/utils/JoltUtils.h | 14 +-
.../windows-event-log/ConsumeWindowsEventLog.cpp | 16 +-
.../windows-event-log/ConsumeWindowsEventLog.h | 4 +-
extensions/windows-event-log/wel/Bookmark.cpp | 10 +-
extensions/windows-event-log/wel/Bookmark.h | 2 +-
.../windows-event-log/wel/WindowsEventLog.cpp | 8 +-
extensions/windows-event-log/wel/WindowsEventLog.h | 2 +-
libminifi/CMakeLists.txt | 5 +-
libminifi/include/FlowController.h | 4 +-
libminifi/include/SchedulingAgent.h | 4 +-
libminifi/include/c2/C2Utils.h | 2 +-
libminifi/include/c2/FlowStatusBuilder.h | 8 +-
libminifi/include/core/ProcessContextImpl.h | 16 +-
libminifi/include/core/ProcessSession.h | 2 +-
.../include/core/controller/ControllerService.h | 8 +-
libminifi/include/core/flow/Node.h | 2 +-
libminifi/include/core/state/UpdateController.h | 2 +-
.../include/core/state/nodes/ResponseNodeLoader.h | 2 +-
libminifi/include/utils/file/AssetManager.h | 4 +-
libminifi/src/FlowController.cpp | 12 +-
libminifi/src/SchedulingAgent.cpp | 12 +-
libminifi/src/c2/C2Agent.cpp | 18 +-
libminifi/src/c2/C2Utils.cpp | 12 +-
libminifi/src/c2/FlowStatusBuilder.cpp | 26 +-
libminifi/src/core/ProcessContextImpl.cpp | 22 +-
libminifi/src/core/ProcessSession.cpp | 4 +-
.../src/core/state/nodes/ResponseNodeLoader.cpp | 4 +-
libminifi/src/sitetosite/SiteToSiteClient.cpp | 20 +-
libminifi/src/utils/file/AssetManager.cpp | 6 +-
libminifi/test/libtest/unit/ProvenanceTestHelper.h | 2 +
libminifi/test/unit/ExpectedTest.cpp | 177 +-
libminifi/test/unit/OptionalTest.cpp | 8 +-
libminifi/test/unit/ParsingUtilsTests.cpp | 22 +-
.../common/include/minifi-cpp/io/StreamCallback.h | 20 +-
.../minifi-cpp/controllers/RecordSetReader.h | 2 +-
.../minifi-cpp/core/ConfigurableComponent.h | 20 +-
.../include/minifi-cpp/core/ProcessContext.h | 26 +-
.../include/minifi-cpp/core/ProcessSession.h | 2 +-
minifi-api/include/minifi-cpp/core/Property.h | 8 +-
.../core/controller/ControllerServiceContext.h | 4 +-
thirdparty/bustache/remove_installs.patch | 49 +
thirdparty/couchbase/remove-debug-symbols.patch | 12 -
thirdparty/couchbase/remove-thirdparty-1.0.2.patch | 172 --
thirdparty/couchbase/remove-thirdparty.patch | 218 +-
.../couchbase/use_fmt_instead_of_spdlog_fmt.patch | 2641 ++++++++++++++++++++
.../libstdc++/avoid_bogus_Wrestrict_PR105651.patch | 32 -
136 files changed, 3437 insertions(+), 1175 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 086794bf3..71a4abce3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -12,8 +12,8 @@ env:
CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/.ccache
jobs:
macos_xcode:
- name: "macOS 14 aarch64"
- runs-on: macos-14
+ name: "macOS 26 aarch64"
+ runs-on: macos-26
timeout-minutes: 240
env:
MACOS_MINIFI_OPTIONS: >-
diff --git a/.github/workflows/compiler-support.yml b/.github/workflows/compiler-support.yml
index 555aa7a4e..009f318f8 100644
--- a/.github/workflows/compiler-support.yml
+++ b/.github/workflows/compiler-support.yml
@@ -14,8 +14,8 @@ jobs:
strategy:
fail-fast: false
matrix:
- platform: [ { id: gcc-12, base_image: gcc:12-bookworm },
- { id: gcc-15, base_image: gcc:15-bookworm } ]
+ platform: [ { id: gcc-13, base_image: gcc:13-bookworm },
+ { id: gcc-15, base_image: gcc:15-trixie } ]
runs-on: ubuntu-24.04
steps:
@@ -36,8 +36,8 @@ jobs:
strategy:
fail-fast: false
matrix:
- platform: [ { id: clang-16, base_image: silkeh/clang:16-bookworm },
- { id: clang-20, base_image: silkeh/clang:20-bookworm } ]
+ platform: [ { id: clang-18, base_image: silkeh/clang:18-bookworm },
+ { id: clang-21, base_image: silkeh/clang:21-trixie } ]
runs-on: ubuntu-24.04
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4bc5ce888..96257bf09 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -297,9 +297,6 @@ add_library(RapidJSON INTERFACE)
target_include_directories(RapidJSON SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/rapidjson-48fbd8cd202ca54031fe799db2ad44ffa8e77c13/include")
target_compile_definitions(RapidJSON INTERFACE RAPIDJSON_HAS_STDSTRING)
-include(Coroutines)
-enable_coroutines()
-
# gsl-lite
include(GslLite)
@@ -320,9 +317,6 @@ target_compile_definitions(gsl-lite INTERFACE ${GslDefinitions})
# date
include(Date)
-# expected-lite
-include(ExpectedLite)
-
# magic_enum
include(MagicEnum)
@@ -338,10 +332,6 @@ else()
list(APPEND MINIFI_CPP_COMPILE_OPTIONS -Werror)
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
- if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.4)
- # -Wrestrict may cause build failure in < GCC 12.4 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104336
- list(APPEND MINIFI_CPP_COMPILE_OPTIONS -Wno-error=restrict)
- endif()
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15)
list(APPEND MINIFI_CPP_COMPILE_OPTIONS -Wno-maybe-uninitialized)
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118634
diff --git a/LICENSE b/LICENSE
index 9e8c591ec..520e0ea56 100644
--- a/LICENSE
+++ b/LICENSE
@@ -2758,34 +2758,6 @@ SGI C++ Standard Template Library license
--------------------------------------------------------------------------
-This project bundles 'expected-lite' under the Boost Software License 1.0
-
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------
-
This project bundles 'asio' under the Boost Software License 1.0
Boost Software License - Version 1.0 - August 17th, 2003
diff --git a/NOTICE b/NOTICE
index 43e689722..0ceed4b2a 100644
--- a/NOTICE
+++ b/NOTICE
@@ -51,7 +51,6 @@ This software includes third party software subject to the following copyrights:
- IANA timezone database - public domain
- date (HowardHinnant/date) - notices below
- range-v3 - Eric Niebler and other contributors
-- expected-lite - Copyright (C) 2016-2020 Martin Moene.
- asio - Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- TartanLlama/expected - public domain, thanks to Sy Brand
- libyaml - Copyright (c) 2006-2016 Kirill Simonov, Copyright (c) 2017-2020 Ingy döt Net
diff --git a/README.md b/README.md
index fe9b9ca6e..422c221db 100644
--- a/README.md
+++ b/README.md
@@ -123,8 +123,8 @@ Communicating with Apache NiFi can be done using the Site-to-Site protocol. More
#### Utilities
* CMake 3.24 or greater
* Compiler
- * g++ 12 or greater
- * clang 16 or greater
+ * g++ 13 or greater
+ * clang 18 or greater
* msvc 19.33 or greater
* bison 3.0.x+ (3.2 has been shown to fail builds)
* flex 2.6 or greater
diff --git a/cmake/Bustache.cmake b/cmake/Bustache.cmake
index a881a90be..d33796da8 100644
--- a/cmake/Bustache.cmake
+++ b/cmake/Bustache.cmake
@@ -24,14 +24,17 @@ set(BUSTACHE_USE_FMT ON CACHE STRING "" FORCE)
set(PATCH_FILE_1 "${CMAKE_SOURCE_DIR}/thirdparty/bustache/add-append.patch")
set(PATCH_FILE_2 "${CMAKE_SOURCE_DIR}/thirdparty/bustache/fix-deprecated-literal-operator.patch")
+set(PATCH_FILE_3 "${CMAKE_SOURCE_DIR}/thirdparty/bustache/remove_installs.patch")
set(PC ${Bash_EXECUTABLE} -c "set -x &&\
(\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i \\\"${PATCH_FILE_1}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i \\\"${PATCH_FILE_1}\\\") &&\
- (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i \\\"${PATCH_FILE_2}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i \\\"${PATCH_FILE_2}\\\")")
+ (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i \\\"${PATCH_FILE_2}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i \\\"${PATCH_FILE_2}\\\") &&\
+ (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i \\\"${PATCH_FILE_3}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i \\\"${PATCH_FILE_3}\\\")")
+
FetchContent_Declare(Bustache
GIT_REPOSITORY https://github.com/jamboree/bustache.git
- GIT_TAG 47096caa8e1f9f7ebe34e3a022dbb822c174011d
+ GIT_TAG af10816ce3d2ff8577fd27caa2c1005c01d8069b
PATCH_COMMAND "${PC}"
SYSTEM
)
diff --git a/cmake/Coroutines.cmake b/cmake/Coroutines.cmake
deleted file mode 100644
index e027551e5..000000000
--- a/cmake/Coroutines.cmake
+++ /dev/null
@@ -1,22 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-
-function(enable_coroutines)
- if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines" PARENT_SCOPE)
- endif()
-endfunction(enable_coroutines)
diff --git a/cmake/Couchbase.cmake b/cmake/Couchbase.cmake
index 68bab1c6a..2601e8747 100644
--- a/cmake/Couchbase.cmake
+++ b/cmake/Couchbase.cmake
@@ -30,9 +30,14 @@ set(COUCHBASE_CXX_CLIENT_BUILD_TOOLS OFF CACHE BOOL "" FORCE)
set(COUCHBASE_CXX_CLIENT_POST_LINKED_OPENSSL ON CACHE BOOL "" FORCE)
set(COUCHBASE_CXX_CLIENT_INSTALL OFF CACHE BOOL "" FORCE)
+# Fix for MSVC + ASIO C++20/23 concept evaluation bugs
+if(MSVC)
+ add_compile_definitions(ASIO_DISABLE_CONCEPTS)
+endif()
+
set(PATCH_FILE_1 "${CMAKE_SOURCE_DIR}/thirdparty/couchbase/remove-thirdparty.patch")
-set(PATCH_FILE_2 "${CMAKE_SOURCE_DIR}/thirdparty/couchbase/remove-debug-symbols.patch")
-set(PATCH_FILE_3 "${CMAKE_SOURCE_DIR}/thirdparty/couchbase/c++23_fixes.patch")
+set(PATCH_FILE_2 "${CMAKE_SOURCE_DIR}/thirdparty/couchbase/c++23_fixes.patch")
+set(PATCH_FILE_3 "${CMAKE_SOURCE_DIR}/thirdparty/couchbase/use_fmt_instead_of_spdlog_fmt.patch")
set(PC ${Bash_EXECUTABLE} -c "set -x &&\
(\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i \\\"${PATCH_FILE_1}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i \\\"${PATCH_FILE_1}\\\") &&\
@@ -40,8 +45,8 @@ set(PC ${Bash_EXECUTABLE} -c "set -x &&\
(\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i \\\"${PATCH_FILE_3}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i \\\"${PATCH_FILE_3}\\\")")
FetchContent_Declare(couchbase-cxx-client
- URL https://github.com/couchbase/couchbase-cxx-client/releases/download/1.1.0/couchbase-cxx-client-1.1.0.tar.gz
- URL_HASH SHA256=bd3a7f1492e242b239acd965eed4472cecb0319d40d05480f97cdec705960ba0
+ URL https://github.com/couchbase/couchbase-cxx-client/archive/refs/tags/1.3.1.tar.gz
+ URL_HASH SHA256=9c497d8ba6f3e4a12376826ae1c172356e16190bb44584f087d7d1a81278dc0f
PATCH_COMMAND "${PC}"
SYSTEM
)
diff --git a/cmake/CppVersion.cmake b/cmake/CppVersion.cmake
index 8b6edee60..613fed759 100644
--- a/cmake/CppVersion.cmake
+++ b/cmake/CppVersion.cmake
@@ -21,21 +21,17 @@ function(set_cpp_version)
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/std:c++latest>)
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/permissive->)
else()
- message(STATUS "The Visual Studio C++ compiler ${CMAKE_CXX_COMPILER} is not supported. Please use Visual Studio 2022 or newer.")
+ message(FATAL_ERROR "The Visual Studio C++ compiler ${CMAKE_CXX_COMPILER} is not supported. Please use Visual Studio 2022 or newer.")
endif()
set(CMAKE_CXX_STANDARD 23 PARENT_SCOPE)
else()
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++23" COMPILER_SUPPORTS_CXX23)
- CHECK_CXX_COMPILER_FLAG("-std=c++2b" COMPILER_SUPPORTS_CXX2B)
if(COMPILER_SUPPORTS_CXX23)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++23" PARENT_SCOPE)
set(CMAKE_CXX_STANDARD 23 PARENT_SCOPE)
- elseif(COMPILER_SUPPORTS_CXX2B)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++2b" PARENT_SCOPE)
- set(CMAKE_CXX_STANDARD 23 PARENT_SCOPE)
else()
- message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no support for -std=c++23 or -std=c++2b. Please use a more recent C++ compiler version.")
+ message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no support for -std=c++23. Please use a more recent C++ compiler version.")
endif()
endif()
diff --git a/cmake/ExpectedLite.cmake b/cmake/ExpectedLite.cmake
deleted file mode 100644
index 4ee997a97..000000000
--- a/cmake/ExpectedLite.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-
-include(FetchContent)
-
-FetchContent_Declare(expected-lite
- URL https://github.com/martinmoene/expected-lite/archive/refs/tags/v0.9.0.tar.gz
- URL_HASH SHA256=e1b3ac812295ef8512c015d8271204105a71957323f8ab4e75f6856d71b8868d
- SYSTEM
-)
-
-# Due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119714
-FetchContent_MakeAvailable(expected-lite)
-target_compile_definitions(expected-lite INTERFACE nsel_CONFIG_SELECT_EXPECTED=nsel_EXPECTED_NONSTD)
diff --git a/cmake/Protobuf.cmake b/cmake/Protobuf.cmake
index eb0a73565..ee5523cd0 100644
--- a/cmake/Protobuf.cmake
+++ b/cmake/Protobuf.cmake
@@ -20,8 +20,8 @@ set(protobuf_BUILD_TESTS OFF CACHE BOOL "" FORCE)
FetchContent_Declare(
protobuf
- URL https://github.com/protocolbuffers/protobuf/archive/refs/tags/v31.1.tar.gz
- URL_HASH SHA256=c3a0a9ece8932e31c3b736e2db18b1c42e7070cd9b881388b26d01aa71e24ca2
+ URL https://github.com/protocolbuffers/protobuf/archive/refs/tags/v34.1.tar.gz
+ URL_HASH SHA256=a83103b7ed3afaeedee9a212c8f65825444f58144f5e075b73c83f2b4ff27b62
)
FetchContent_MakeAvailable(protobuf)
diff --git a/cmake/fmt.cmake b/cmake/fmt.cmake
index 0777eaa5d..910e69bef 100644
--- a/cmake/fmt.cmake
+++ b/cmake/fmt.cmake
@@ -19,8 +19,8 @@
include(FetchContent)
FetchContent_Declare(Fmt
- URL https://github.com/fmtlib/fmt/archive/refs/tags/11.2.0.tar.gz
- URL_HASH SHA256=bc23066d87ab3168f27cef3e97d545fa63314f5c79df5ea444d41d56f962c6af
+ URL https://github.com/fmtlib/fmt/archive/refs/tags/12.1.0.tar.gz
+ URL_HASH SHA256=ea7de4299689e12b6dddd392f9896f08fb0777ac7168897a244a6d6085043fea
OVERRIDE_FIND_PACKAGE
SYSTEM
)
diff --git a/controller/Controller.cpp b/controller/Controller.cpp
index 293979ad7..03c5afd40 100644
--- a/controller/Controller.cpp
+++ b/controller/Controller.cpp
@@ -228,31 +228,31 @@ bool getJstacks(const utils::net::SocketData& socket_data, std::ostream &out) {
return true;
}
-nonstd::expected<void, std::string> getDebugBundle(const utils::net::SocketData& socket_data, const std::filesystem::path& target_dir) {
+std::expected<void, std::string> getDebugBundle(const utils::net::SocketData& socket_data, const std::filesystem::path& target_dir) {
const auto connection_stream = std::make_unique<utils::net::AsioSocketConnection>(socket_data);
if (connection_stream->initialize() < 0) {
- return nonstd::make_unexpected("Could not connect to remote host " + socket_data.host + ":" + std::to_string(socket_data.port));
+ return std::unexpected{"Could not connect to remote host " + socket_data.host + ":" + std::to_string(socket_data.port)};
}
io::BufferStream buffer;
auto op = static_cast<uint8_t>(c2::Operation::transfer);
buffer.write(&op, 1);
buffer.write("debug");
if (io::isError(connection_stream->write(buffer.getBuffer()))) {
- return nonstd::make_unexpected("Could not write to connection " + socket_data.host + ":" + std::to_string(socket_data.port));
+ return std::unexpected{"Could not write to connection " + socket_data.host + ":" + std::to_string(socket_data.port)};
}
connection_stream->read(op);
size_t bundle_size = 0;
connection_stream->read(bundle_size);
if (bundle_size == 0) {
- return nonstd::make_unexpected("Failed to retrieve debug bundle");
+ return std::unexpected{"Failed to retrieve debug bundle"};
}
if (std::filesystem::exists(target_dir) && !std::filesystem::is_directory(target_dir)) {
- return nonstd::make_unexpected("Object specified as the target directory already exists and it is not a directory");
+ return std::unexpected{"Object specified as the target directory already exists and it is not a directory"};
}
if (!std::filesystem::exists(target_dir) && utils::file::create_dir(target_dir) != 0) {
- return nonstd::make_unexpected("Failed to create target directory: " + target_dir.string());
+ return std::unexpected{"Failed to create target directory: " + target_dir.string()};
}
std::ofstream out_file(target_dir / "debug.tar.gz");
diff --git a/controller/Controller.h b/controller/Controller.h
index 0358f2a3c..e2dcd7e86 100644
--- a/controller/Controller.h
+++ b/controller/Controller.h
@@ -37,6 +37,6 @@ bool listConnections(const utils::net::SocketData& socket_data, std::ostream &ou
bool printManifest(const utils::net::SocketData& socket_data, std::ostream &out);
bool getJstacks(const utils::net::SocketData& socket_data, std::ostream &out);
bool getFlowStatus(const utils::net::SocketData& socket_data, const std::string& status_query, std::ostream &out);
-nonstd::expected<void, std::string> getDebugBundle(const utils::net::SocketData& socket_data, const std::filesystem::path& target_dir);
+std::expected<void, std::string> getDebugBundle(const utils::net::SocketData& socket_data, const std::filesystem::path& target_dir);
} // namespace org::apache::nifi::minifi::controller
diff --git a/controller/tests/ControllerTests.cpp b/controller/tests/ControllerTests.cpp
index a2376de68..6955a13d0 100644
--- a/controller/tests/ControllerTests.cpp
+++ b/controller/tests/ControllerTests.cpp
@@ -164,7 +164,7 @@ class TestUpdateSink : public minifi::state::StateMonitor {
return {};
}
- nonstd::expected<void, std::string> applyUpdate(const std::string& /*source*/, const std::string& /*configuration*/, bool /*persist*/ = false,
+ std::expected<void, std::string> applyUpdate(const std::string& /*source*/, const std::string& /*configuration*/, bool /*persist*/ = false,
const std::optional<std::string>& /*flow_id*/ = std::nullopt) override {
update_calls++;
return {};
diff --git a/core-framework/CMakeLists.txt b/core-framework/CMakeLists.txt
index 757d087a8..3dc5a77c5 100644
--- a/core-framework/CMakeLists.txt
+++ b/core-framework/CMakeLists.txt
@@ -15,10 +15,7 @@ file(GLOB SOURCES
add_minifi_library(minifi-core-framework STATIC ${SOURCES})
target_include_directories(minifi-core-framework PUBLIC include)
-target_link_libraries(minifi-core-framework PUBLIC minifi-api minifi-core-framework-common ZLIB::ZLIB concurrentqueue RapidJSON spdlog Threads::Threads gsl-lite libsodium range-v3 expected-lite date::date date::tz asio magic_enum OpenSSL::Crypto OpenSSL::SSL CURL::libcurl RapidJSON)
+target_link_libraries(minifi-core-framework PUBLIC minifi-api minifi-core-framework-common ZLIB::ZLIB concurrentqueue RapidJSON spdlog Threads::Threads gsl-lite libsodium range-v3 date::date date::tz asio magic_enum OpenSSL::Crypto OpenSSL::SSL CURL::libcurl RapidJSON)
if(NOT WIN32)
target_link_libraries(minifi-core-framework PUBLIC OSSP::libuuid++)
endif()
-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9)
- target_link_libraries(minifi-core-framework PUBLIC stdc++fs)
-endif()
diff --git a/core-framework/common/CMakeLists.txt b/core-framework/common/CMakeLists.txt
index 928256c6b..45ad12697 100644
--- a/core-framework/common/CMakeLists.txt
+++ b/core-framework/common/CMakeLists.txt
@@ -13,10 +13,7 @@ file(GLOB SOURCES
add_minifi_library(minifi-core-framework-common STATIC ${SOURCES})
target_include_directories(minifi-core-framework-common PUBLIC include)
-target_link_libraries(minifi-core-framework-common PUBLIC minifi-api-common ZLIB::ZLIB concurrentqueue RapidJSON spdlog Threads::Threads gsl-lite libsodium range-v3 expected-lite date::date date::tz asio magic_enum OpenSSL::Crypto OpenSSL::SSL CURL::libcurl RapidJSON)
+target_link_libraries(minifi-core-framework-common PUBLIC minifi-api-common ZLIB::ZLIB concurrentqueue RapidJSON spdlog Threads::Threads gsl-lite libsodium range-v3 date::date date::tz asio magic_enum OpenSSL::Crypto OpenSSL::SSL CURL::libcurl RapidJSON)
if(NOT WIN32)
target_link_libraries(minifi-core-framework-common PUBLIC OSSP::libuuid++)
endif()
-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9)
- target_link_libraries(minifi-core-framework-common PUBLIC stdc++fs)
-endif()
diff --git a/core-framework/common/include/utils/OptionalUtils.h b/core-framework/common/include/utils/OptionalUtils.h
index 7289b6457..f3963ac83 100644
--- a/core-framework/common/include/utils/OptionalUtils.h
+++ b/core-framework/common/include/utils/OptionalUtils.h
@@ -22,8 +22,8 @@
#include <type_traits>
#include <utility>
#include <iostream>
+#include <expected>
-#include "nonstd/expected.hpp"
#include "utils/GeneralUtils.h"
#include "minifi-cpp/utils/gsl.h"
#include "utils/detail/MonadicOperationWrappers.h"
@@ -130,9 +130,9 @@ auto operator|(std::optional<SourceType> o, filter_wrapper<F> f) noexcept(noexce
}
template<typename T, typename E>
-nonstd::expected<T, E> operator|(std::optional<T> object, to_expected_wrapper<E> e) {
+std::expected<T, E> operator|(std::optional<T> object, to_expected_wrapper<E> e) {
if (!object) {
- return nonstd::make_unexpected(e.error);
+ return std::unexpected{e.error};
}
return std::move(*object);
}
diff --git a/core-framework/common/include/utils/ParsingUtils.h b/core-framework/common/include/utils/ParsingUtils.h
index 34307b0ff..33236eda8 100644
--- a/core-framework/common/include/utils/ParsingUtils.h
+++ b/core-framework/common/include/utils/ParsingUtils.h
@@ -23,69 +23,69 @@
#include "fmt/format.h"
namespace org::apache::nifi::minifi::parsing {
-nonstd::expected<bool, std::error_code> parseBool(std::string_view input);
+std::expected<bool, std::error_code> parseBool(std::string_view input);
template<std::integral T>
-nonstd::expected<T, std::error_code> parseIntegralMinMax(std::string_view input, T minimum, T maximum);
+std::expected<T, std::error_code> parseIntegralMinMax(std::string_view input, T minimum, T maximum);
template<std::integral T>
-nonstd::expected<T, std::error_code> parseIntegral(std::string_view input);
+std::expected<T, std::error_code> parseIntegral(std::string_view input);
template<class TargetDuration>
-nonstd::expected<TargetDuration, std::error_code> parseDurationMinMax(std::string_view input, TargetDuration minimum, TargetDuration maximum);
+std::expected<TargetDuration, std::error_code> parseDurationMinMax(std::string_view input, TargetDuration minimum, TargetDuration maximum);
template<class TargetDuration = std::chrono::milliseconds>
-nonstd::expected<TargetDuration, std::error_code> parseDuration(std::string_view input);
+std::expected<TargetDuration, std::error_code> parseDuration(std::string_view input);
-nonstd::expected<uint64_t, std::error_code> parseDataSizeMinMax(std::string_view input, uint64_t minimum, uint64_t maximum);
-nonstd::expected<uint64_t, std::error_code> parseDataSize(std::string_view input);
+std::expected<uint64_t, std::error_code> parseDataSizeMinMax(std::string_view input, uint64_t minimum, uint64_t maximum);
+std::expected<uint64_t, std::error_code> parseDataSize(std::string_view input);
-nonstd::expected<uint32_t, std::error_code> parseUnixOctalPermissions(std::string_view input);
+std::expected<uint32_t, std::error_code> parseUnixOctalPermissions(std::string_view input);
-nonstd::expected<float, std::error_code> parseFloat(std::string_view input);
+std::expected<float, std::error_code> parseFloat(std::string_view input);
template<std::integral T>
-nonstd::expected<T, std::error_code> parseIntegralMinMax(const std::string_view input, const T minimum, const T maximum) {
+std::expected<T, std::error_code> parseIntegralMinMax(const std::string_view input, const T minimum, const T maximum) {
const auto trimmed_input = utils::string::trim(input);
T t{};
const auto [ptr, ec] = std::from_chars(trimmed_input.data(), trimmed_input.data() + trimmed_input.size(), t);
if (ec != std::errc()) {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
if (ptr != trimmed_input.data() + trimmed_input.size()) {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
- if (t < minimum) { return nonstd::make_unexpected(core::ParsingErrorCode::SmallerThanMinimum); }
- if (t > maximum) { return nonstd::make_unexpected(core::ParsingErrorCode::LargerThanMaximum); }
+ if (t < minimum) { return std::unexpected{core::ParsingErrorCode::SmallerThanMinimum}; }
+ if (t > maximum) { return std::unexpected{core::ParsingErrorCode::LargerThanMaximum}; }
return t;
}
template<std::integral T>
-nonstd::expected<T, std::error_code> parseIntegral(const std::string_view input) {
+std::expected<T, std::error_code> parseIntegral(const std::string_view input) {
return parseIntegralMinMax<T>(input, std::numeric_limits<T>::min(), std::numeric_limits<T>::max());
}
template<class TargetDuration>
-nonstd::expected<TargetDuration, std::error_code> parseDurationMinMax(const std::string_view input, const TargetDuration minimum, const TargetDuration maximum) {
+std::expected<TargetDuration, std::error_code> parseDurationMinMax(const std::string_view input, const TargetDuration minimum, const TargetDuration maximum) {
auto duration = utils::timeutils::StringToDuration<std::chrono::milliseconds>(input);
- if (!duration.has_value()) { return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError); }
+ if (!duration.has_value()) { return std::unexpected{core::ParsingErrorCode::GeneralParsingError}; }
- if (*duration < minimum) { return nonstd::make_unexpected(core::ParsingErrorCode::SmallerThanMinimum); }
- if (*duration > maximum) { return nonstd::make_unexpected(core::ParsingErrorCode::LargerThanMaximum); }
+ if (*duration < minimum) { return std::unexpected{core::ParsingErrorCode::SmallerThanMinimum}; }
+ if (*duration > maximum) { return std::unexpected{core::ParsingErrorCode::LargerThanMaximum}; }
return *duration;
}
template<class TargetDuration>
-nonstd::expected<TargetDuration, std::error_code> parseDuration(const std::string_view input) {
+std::expected<TargetDuration, std::error_code> parseDuration(const std::string_view input) {
return parseDurationMinMax<TargetDuration>(input, TargetDuration::min(), TargetDuration::max());
}
template<typename T>
-nonstd::expected<T, std::error_code> parseEnum(const std::string_view input) {
+std::expected<T, std::error_code> parseEnum(const std::string_view input) {
std::optional<T> result = magic_enum::enum_cast<T>(input);
if (!result) {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
return *result;
}
diff --git a/core-framework/common/include/utils/StringUtils.h b/core-framework/common/include/utils/StringUtils.h
index be9091a91..679f83801 100644
--- a/core-framework/common/include/utils/StringUtils.h
+++ b/core-framework/common/include/utils/StringUtils.h
@@ -430,7 +430,7 @@ bool matchesSequence(std::string_view str, const std::vector<std::string>& patte
bool splitToValueAndUnit(std::string_view input, int64_t& value, std::string& unit);
-nonstd::expected<std::optional<char>, std::error_code> parseCharacter(std::string_view input);
+std::expected<std::optional<char>, std::error_code> parseCharacter(std::string_view input);
std::string replaceEscapedCharacters(std::string_view input);
@@ -438,14 +438,14 @@ std::string replaceEscapedCharacters(std::string_view input);
template <typename T> concept arithmetic = std::integral<T> || std::floating_point<T>;
template<arithmetic T>
-nonstd::expected<T, std::error_code> parseNumber(std::string_view input) {
+std::expected<T, std::error_code> parseNumber(std::string_view input) {
T t{};
const auto [ptr, ec] = std::from_chars(input.data(), input.data() + input.size(), t);
if (ec != std::errc()) {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
if (ptr != input.data() + input.size()) {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
return t;
}
diff --git a/core-framework/common/include/utils/detail/MonadicOperationWrappers.h b/core-framework/common/include/utils/detail/MonadicOperationWrappers.h
index d17aa888b..a2d0a5035 100644
--- a/core-framework/common/include/utils/detail/MonadicOperationWrappers.h
+++ b/core-framework/common/include/utils/detail/MonadicOperationWrappers.h
@@ -104,7 +104,7 @@ detail::value_or_else_wrapper<T&&> valueOrElse(T&& func) noexcept { return {std:
/**
- * Converts from std::optional<T> to nonstd::expected<T, E>
+ * Converts from std::optional<T> to std::expected<T, E>
* The parameter will be used as the unexpected value if the optional is null.
*/
template<typename E>
@@ -112,7 +112,7 @@ detail::to_expected_wrapper<E> toExpected(E&& e) noexcept { return {std::forward
/**
- * Converts from nonstd::expected<T, E> to std::optional<T>
+ * Converts from std::expected<T, E> to std::optional<T>
* Consuming the expected and discarding the error, if any.
*/
inline detail::to_optional_wrapper toOptional() noexcept { return {}; }
diff --git a/core-framework/common/include/utils/expected.h b/core-framework/common/include/utils/expected.h
index fb0f3457e..6f07b6899 100644
--- a/core-framework/common/include/utils/expected.h
+++ b/core-framework/common/include/utils/expected.h
@@ -19,8 +19,8 @@
#include <utility>
#include <optional>
#include <iostream>
+#include <expected>
-#include "nonstd/expected.hpp"
#include "utils/detail/MonadicOperationWrappers.h"
#include "fmt/format.h"
#include "fmt/std.h"
@@ -32,7 +32,7 @@ template<typename T>
inline constexpr bool is_expected_v = false;
template<typename V, typename E>
-inline constexpr bool is_expected_v<nonstd::expected<V, E>> = true;
+inline constexpr bool is_expected_v<std::expected<V, E>> = true;
template<typename T>
concept expected = is_expected_v<std::remove_cvref_t<T>>;
@@ -44,7 +44,7 @@ inline constexpr bool is_valid_unexpected_type_v = std::is_same_v<T, std::remove
// specialization: the type must not be a specialization of std::unexpected
template<typename E>
-inline constexpr bool is_valid_unexpected_type_v<nonstd::unexpected_type<E>> = false;
+inline constexpr bool is_valid_unexpected_type_v<std::unexpected<E>> = false;
template<typename T>
concept valid_unexpected_type = is_valid_unexpected_type_v<T>;
@@ -68,24 +68,24 @@ auto operator|(Expected&& object, transform_wrapper<F> f) {
if constexpr (std::is_void_v<value_type>) {
using function_return_type = std::remove_cvref_t<std::invoke_result_t<F>>;
if (!object.has_value()) {
- return nonstd::expected<function_return_type, error_type>{nonstd::unexpect, std::forward<Expected>(object).error()};
+ return std::expected<function_return_type, error_type>{std::unexpect, std::forward<Expected>(object).error()};
}
if constexpr (std::is_void_v<function_return_type>) {
std::invoke(std::forward<F>(f.function));
- return nonstd::expected<void, error_type>{};
+ return std::expected<void, error_type>{};
} else {
- return nonstd::expected<function_return_type, error_type>{std::invoke(std::forward<F>(f.function))};
+ return std::expected<function_return_type, error_type>{std::invoke(std::forward<F>(f.function))};
}
} else {
using function_return_type = std::remove_cvref_t<std::invoke_result_t<F, decltype(*std::forward<Expected>(object))>>;
if (!object.has_value()) {
- return nonstd::expected<function_return_type, error_type>{nonstd::unexpect, std::forward<Expected>(object).error()};
+ return std::expected<function_return_type, error_type>{std::unexpect, std::forward<Expected>(object).error()};
}
if constexpr (std::is_void_v<function_return_type>) {
std::invoke(std::forward<F>(f.function), *std::forward<Expected>(object));
- return nonstd::expected<void, error_type>{};
+ return std::expected<void, error_type>{};
} else {
- return nonstd::expected<function_return_type, error_type>{std::invoke(std::forward<F>(f.function), *std::forward<Expected>(object))};
+ return std::expected<function_return_type, error_type>{std::invoke(std::forward<F>(f.function), *std::forward<Expected>(object))};
}
}
}
@@ -100,7 +100,7 @@ auto operator|(Expected&& object, and_then_wrapper<F> f) {
if (object.has_value()) {
return std::invoke(std::forward<F>(f.function));
} else {
- return function_return_type{nonstd::unexpect, std::forward<Expected>(object).error()};
+ return function_return_type{std::unexpect, std::forward<Expected>(object).error()};
}
} else {
using function_return_type = std::remove_cvref_t<std::invoke_result_t<F, decltype(*std::forward<Expected>(object))>>;
@@ -108,7 +108,7 @@ auto operator|(Expected&& object, and_then_wrapper<F> f) {
if (object.has_value()) {
return std::invoke(std::forward<F>(f.function), *std::forward<Expected>(object));
} else {
- return function_return_type{nonstd::unexpect, std::forward<Expected>(object).error()};
+ return function_return_type{std::unexpect, std::forward<Expected>(object).error()};
}
}
}
@@ -188,11 +188,11 @@ auto operator|(Expected&& object, transform_error_wrapper<F> f) {
using value_type = typename std::remove_cvref_t<Expected>::value_type;
using transformed_error_type = std::remove_cv_t<std::invoke_result_t<F, decltype(std::forward<Expected>(object).error())>>;
static_assert(valid_unexpected_type<transformed_error_type>, "transformError expects a function returning a valid unexpected type");
- using transformed_expected_type = nonstd::expected<value_type, transformed_error_type>;
+ using transformed_expected_type = std::expected<value_type, transformed_error_type>;
if (object.has_value()) {
return transformed_expected_type{std::forward<Expected>(object).value()};
}
- return transformed_expected_type{nonstd::unexpect, std::invoke(std::forward<F>(f.function), std::forward<Expected>(object).error())};
+ return transformed_expected_type{std::unexpect, std::invoke(std::forward<F>(f.function), std::forward<Expected>(object).error())};
}
template<expected Expected>
@@ -224,7 +224,7 @@ typename std::remove_cvref_t<Expected>::value_type operator|(Expected object, de
template<typename F, typename... Args>
auto try_expression(F&& action, Args&&... args) noexcept {
using action_return_type = std::remove_cvref_t<std::invoke_result_t<F, Args&&...>>;
- using return_type = nonstd::expected<action_return_type, std::exception_ptr>;
+ using return_type = std::expected<action_return_type, std::exception_ptr>;
try {
if constexpr (std::is_void_v<action_return_type>) {
std::invoke(std::forward<F>(action), std::forward<Args>(args)...);
@@ -233,40 +233,8 @@ auto try_expression(F&& action, Args&&... args) noexcept {
return return_type{std::invoke(std::forward<F>(action), std::forward<Args>(args)...)};
}
} catch (...) {
- return return_type{nonstd::unexpect, std::current_exception()};
+ return return_type{std::unexpect, std::current_exception()};
}
}
} // namespace org::apache::nifi::minifi::utils
-
-template <typename T, typename E>
-concept HasStdExpected = requires { typename std::expected<T, E>; };
-
-template <typename T, typename E>
-concept ExpectedTypesDoNotConflict =
- (!HasStdExpected<T, E> ||
- !std::same_as<nonstd::expected<T, E>, std::expected<T, E>>);
-
-// based on fmt::formatter<std::expected<T, E>, Char>
-template <typename T, typename E, typename Char>
-requires ExpectedTypesDoNotConflict<T, E> &&
- (std::is_void_v<T> || fmt::is_formattable<T, Char>::value) &&
- fmt::is_formattable<E, Char>::value
-struct fmt::formatter<nonstd::expected<T, E>, Char> {
- constexpr auto parse(auto& ctx) { return ctx.begin(); }
-
- auto format(const nonstd::expected<T, E>& value, auto& ctx) const {
- auto out = ctx.out();
-
- if (value.has_value()) {
- out = fmt::detail::write<Char>(out, "nonstd::expected(");
- if constexpr (!std::is_void_v<T>)
- out = fmt::detail::write_escaped_alternative<Char>(out, *value);
- } else {
- out = fmt::detail::write<Char>(out, "nonstd::unexpected(");
- out = fmt::detail::write_escaped_alternative<Char>(out, value.error());
- }
- *out++ = ')';
- return out;
- }
-};
diff --git a/core-framework/common/src/utils/ParsingUtils.cpp b/core-framework/common/src/utils/ParsingUtils.cpp
index 1e3fd67e7..922704b95 100644
--- a/core-framework/common/src/utils/ParsingUtils.cpp
+++ b/core-framework/common/src/utils/ParsingUtils.cpp
@@ -20,11 +20,11 @@
namespace org::apache::nifi::minifi::parsing {
-nonstd::expected<bool, std::error_code> parseBool(const std::string_view input) {
+std::expected<bool, std::error_code> parseBool(const std::string_view input) {
if (utils::string::equalsIgnoreCase(input, "true")) { return true; }
if (utils::string::equalsIgnoreCase(input, "false")) { return false; }
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
namespace {
@@ -56,7 +56,7 @@ std::optional<uint64_t> getUnitMultiplier(const std::string_view unit_str) {
}
} // namespace
-nonstd::expected<uint64_t, std::error_code> parseDataSizeMinMax(const std::string_view input, const uint64_t minimum, const uint64_t maximum) {
+std::expected<uint64_t, std::error_code> parseDataSizeMinMax(const std::string_view input, const uint64_t minimum, const uint64_t maximum) {
const auto trimmed_input = utils::string::trim(input);
const auto split_pos = trimmed_input.find_first_not_of("0123456789");
@@ -67,27 +67,27 @@ nonstd::expected<uint64_t, std::error_code> parseDataSizeMinMax(const std::strin
const auto num_str = trimmed_input.substr(0, split_pos);
const std::string unit_str = utils::string::toUpper(std::string{trimmed_input.substr(split_pos, trimmed_input.size() - split_pos)});
- nonstd::expected<uint64_t, std::error_code> num_part = parseIntegral<uint64_t>(num_str);
- if (!num_part) { return nonstd::make_unexpected(num_part.error()); }
+ std::expected<uint64_t, std::error_code> num_part = parseIntegral<uint64_t>(num_str);
+ if (!num_part) { return std::unexpected{num_part.error()}; }
const auto unit_multiplier = getUnitMultiplier(utils::string::trim(unit_str));
- if (!unit_multiplier) { return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError); }
+ if (!unit_multiplier) { return std::unexpected{core::ParsingErrorCode::GeneralParsingError}; }
uint64_t result = *num_part * *unit_multiplier;
gsl_Assert(unit_multiplier != 0);
if ((result / *unit_multiplier) != *num_part) {
- return nonstd::make_unexpected(core::ParsingErrorCode::OverflowError);
+ return std::unexpected{core::ParsingErrorCode::OverflowError};
}
- if (result < minimum) { return nonstd::make_unexpected(core::ParsingErrorCode::SmallerThanMinimum); }
- if (result > maximum) { return nonstd::make_unexpected(core::ParsingErrorCode::LargerThanMaximum); }
+ if (result < minimum) { return std::unexpected{core::ParsingErrorCode::SmallerThanMinimum}; }
+ if (result > maximum) { return std::unexpected{core::ParsingErrorCode::LargerThanMaximum}; }
return result;
}
-nonstd::expected<uint64_t, std::error_code> parseDataSize(const std::string_view input) {
+std::expected<uint64_t, std::error_code> parseDataSize(const std::string_view input) {
return parseDataSizeMinMax(input, std::numeric_limits<uint64_t>::min(), std::numeric_limits<uint64_t>::max());
}
-nonstd::expected<uint32_t, std::error_code> parseUnixOctalPermissions(const std::string_view input) {
+std::expected<uint32_t, std::error_code> parseUnixOctalPermissions(const std::string_view input) {
uint32_t result = 0U;
if (input.size() == 9U) {
/* Probably rwxrwxrwx formatted */
@@ -95,17 +95,17 @@ nonstd::expected<uint32_t, std::error_code> parseUnixOctalPermissions(const std:
if (input[i * 3] == 'r') {
result |= 04 << ((2 - i) * 3);
} else if (input[i * 3] != '-') {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
if (input[i * 3 + 1] == 'w') {
result |= 02 << ((2 - i) * 3);
} else if (input[i * 3 + 1] != '-') {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
if (input[i * 3 + 2] == 'x') {
result |= 01 << ((2 - i) * 3);
} else if (input[i * 3 + 2] != '-') {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
}
} else {
@@ -114,23 +114,23 @@ nonstd::expected<uint32_t, std::error_code> parseUnixOctalPermissions(const std:
size_t pos = 0U;
result = std::stoul(std::string{input}, &pos, 8);
if (pos != input.size()) {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
if ((result & ~static_cast<uint32_t>(0777)) != 0U) {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
} catch (...) {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
}
return result;
}
-nonstd::expected<float, std::error_code> parseFloat(std::string_view input) {
+std::expected<float, std::error_code> parseFloat(std::string_view input) {
try {
return std::stof(std::string{input});
} catch(const std::exception&) {
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
}
diff --git a/core-framework/common/src/utils/StringUtils.cpp b/core-framework/common/src/utils/StringUtils.cpp
index eee74742d..e200bdf95 100644
--- a/core-framework/common/src/utils/StringUtils.cpp
+++ b/core-framework/common/src/utils/StringUtils.cpp
@@ -518,7 +518,7 @@ bool splitToValueAndUnit(std::string_view input, int64_t& value, std::string& un
return true;
}
-nonstd::expected<std::optional<char>, std::error_code> parseCharacter(const std::string_view input) {
+std::expected<std::optional<char>, std::error_code> parseCharacter(const std::string_view input) {
if (input.empty()) { return std::nullopt; }
if (input.size() == 1) { return input[0]; }
@@ -536,7 +536,7 @@ nonstd::expected<std::optional<char>, std::error_code> parseCharacter(const std:
default: break;
}
}
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
std::string replaceEscapedCharacters(std::string_view input) {
diff --git a/core-framework/include/core/ConfigurableComponentImpl.h b/core-framework/include/core/ConfigurableComponentImpl.h
index 8b212824e..90725d271 100644
--- a/core-framework/include/core/ConfigurableComponentImpl.h
+++ b/core-framework/include/core/ConfigurableComponentImpl.h
@@ -30,28 +30,28 @@ namespace org::apache::nifi::minifi::core {
class ConfigurableComponentImpl : public virtual ConfigurableComponent {
public:
- [[nodiscard]] nonstd::expected<std::string, std::error_code> getProperty(std::string_view name) const override;
- nonstd::expected<void, std::error_code> setProperty(std::string_view name, std::string value) override;
- nonstd::expected<void, std::error_code> clearProperty(std::string_view name) override;
+ [[nodiscard]] std::expected<std::string, std::error_code> getProperty(std::string_view name) const override;
+ std::expected<void, std::error_code> setProperty(std::string_view name, std::string value) override;
+ std::expected<void, std::error_code> clearProperty(std::string_view name) override;
- [[nodiscard]] nonstd::expected<std::string, std::error_code> getDynamicProperty(std::string_view name) const override;
- nonstd::expected<void, std::error_code> setDynamicProperty(std::string name, std::string value) override;
+ [[nodiscard]] std::expected<std::string, std::error_code> getDynamicProperty(std::string_view name) const override;
+ std::expected<void, std::error_code> setDynamicProperty(std::string name, std::string value) override;
void setSupportedProperties(std::span<const PropertyReference> properties);
void setSupportedProperties(std::span<const Property> properties);
[[nodiscard]] std::map<std::string, Property, std::less<>> getSupportedProperties() const override;
- [[nodiscard]] nonstd::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const override;
+ [[nodiscard]] std::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const override;
[[nodiscard]] std::vector<std::string> getDynamicPropertyKeys() const override;
[[nodiscard]] std::map<std::string, std::string> getDynamicProperties() const override;
// for property sequences
- nonstd::expected<void, std::error_code> appendProperty(std::string_view name, std::string value) override;
- nonstd::expected<void, std::error_code> appendDynamicProperty(std::string_view name, std::string value) override;
- [[nodiscard]] nonstd::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const override;
- [[nodiscard]] nonstd::expected<std::vector<std::string>, std::error_code> getAllDynamicPropertyValues(std::string_view name) const override;
+ std::expected<void, std::error_code> appendProperty(std::string_view name, std::string value) override;
+ std::expected<void, std::error_code> appendDynamicProperty(std::string_view name, std::string value) override;
+ [[nodiscard]] std::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const override;
+ [[nodiscard]] std::expected<std::vector<std::string>, std::error_code> getAllDynamicPropertyValues(std::string_view name) const override;
private:
std::shared_ptr<logging::Logger> logger_ = logging::LoggerFactory<ConfigurableComponentImpl>::getLogger();
diff --git a/core-framework/include/core/controller/ControllerServiceBase.h b/core-framework/include/core/controller/ControllerServiceBase.h
index 99c7f2a71..63d1813c7 100644
--- a/core-framework/include/core/controller/ControllerServiceBase.h
+++ b/core-framework/include/core/controller/ControllerServiceBase.h
@@ -75,12 +75,12 @@ class ControllerServiceBase : public ControllerServiceApi {
onEnable();
}
- [[nodiscard]] nonstd::expected<std::string, std::error_code> getProperty(std::string_view name) const {
+ [[nodiscard]] std::expected<std::string, std::error_code> getProperty(std::string_view name) const {
gsl_Expects(context_);
return context_->getProperty(name);
}
- [[nodiscard]] nonstd::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const {
+ [[nodiscard]] std::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const {
gsl_Expects(context_);
return context_->getAllPropertyValues(name);
}
diff --git a/core-framework/include/utils/file/FileUtils.h b/core-framework/include/utils/file/FileUtils.h
index 07d5d610f..f22ea4e51 100644
--- a/core-framework/include/utils/file/FileUtils.h
+++ b/core-framework/include/utils/file/FileUtils.h
@@ -128,11 +128,11 @@ inline std::optional<std::chrono::file_clock::time_point> last_write_time(const
return std::nullopt;
}
-inline nonstd::expected<void, std::error_code> set_last_write_time(const std::filesystem::path& path, std::chrono::file_clock::time_point new_time) {
+inline std::expected<void, std::error_code> set_last_write_time(const std::filesystem::path& path, std::chrono::file_clock::time_point new_time) {
std::error_code ec;
std::filesystem::last_write_time(path, new_time, ec);
if (ec)
- return nonstd::make_unexpected(ec);
+ return std::unexpected{ec};
return {};
}
@@ -600,7 +600,7 @@ struct WindowsFileTimes {
std::chrono::file_clock::time_point last_write_time;
};
-nonstd::expected<WindowsFileTimes, std::error_code> getWindowsFileTimes(const std::filesystem::path& path);
+std::expected<WindowsFileTimes, std::error_code> getWindowsFileTimes(const std::filesystem::path& path);
#endif
} // namespace org::apache::nifi::minifi::utils::file
diff --git a/core-framework/include/utils/file/PathUtils.h b/core-framework/include/utils/file/PathUtils.h
index 04886c1a6..12ca6dd2c 100644
--- a/core-framework/include/utils/file/PathUtils.h
+++ b/core-framework/include/utils/file/PathUtils.h
@@ -43,22 +43,22 @@ inline std::optional<std::filesystem::path> canonicalize(const std::filesystem::
return result;
}
-inline nonstd::expected<void, std::string> validateRelativeFilePath(const std::filesystem::path& path) {
+inline std::expected<void, std::string> validateRelativeFilePath(const std::filesystem::path& path) {
if (path.empty()) {
- return nonstd::make_unexpected("Empty file path");
+ return std::unexpected{"Empty file path"};
}
if (!path.is_relative()) {
- return nonstd::make_unexpected("File path must be a relative path '" + path.string() + "'");
+ return std::unexpected{"File path must be a relative path '" + path.string() + "'"};
}
if (!path.has_filename()) {
- return nonstd::make_unexpected("Filename missing in output path '" + path.string() + "'");
+ return std::unexpected{"Filename missing in output path '" + path.string() + "'"};
}
if (path.filename() == "." || path.filename() == "..") {
- return nonstd::make_unexpected("Invalid filename '" + path.filename().string() + "'");
+ return std::unexpected{"Invalid filename '" + path.filename().string() + "'"};
}
for (const auto& segment : path) {
if (segment == "..") {
- return nonstd::make_unexpected("Accessing parent directory is forbidden in file path '" + path.string() + "'");
+ return std::unexpected{"Accessing parent directory is forbidden in file path '" + path.string() + "'"};
}
}
return {};
diff --git a/core-framework/include/utils/net/DNS.h b/core-framework/include/utils/net/DNS.h
index da8153b0e..600e424e8 100644
--- a/core-framework/include/utils/net/DNS.h
+++ b/core-framework/include/utils/net/DNS.h
@@ -20,15 +20,15 @@
#include <string>
#include <string_view>
#include <system_error>
+#include <expected>
-#include "nonstd/expected.hpp"
#include "asio/ip/address.hpp"
namespace org::apache::nifi::minifi::utils::net {
-nonstd::expected<asio::ip::address, std::error_code> addressFromString(std::string_view ip_address_str);
+std::expected<asio::ip::address, std::error_code> addressFromString(std::string_view ip_address_str);
-nonstd::expected<std::string, std::error_code> reverseDnsLookup(const asio::ip::address& ip_address, std::chrono::steady_clock::duration timeout = std::chrono::seconds(5));
+std::expected<std::string, std::error_code> reverseDnsLookup(const asio::ip::address& ip_address, std::chrono::steady_clock::duration timeout = std::chrono::seconds(5));
std::string getMyHostName();
diff --git a/core-framework/src/core/ConfigurableComponentImpl.cpp b/core-framework/src/core/ConfigurableComponentImpl.cpp
index db0edab2f..1dd09d1e1 100644
--- a/core-framework/src/core/ConfigurableComponentImpl.cpp
+++ b/core-framework/src/core/ConfigurableComponentImpl.cpp
@@ -40,67 +40,67 @@ void ConfigurableComponentImpl::setSupportedProperties(std::span<const Property>
}
-nonstd::expected<std::string, std::error_code> ConfigurableComponentImpl::getProperty(const std::string_view name) const {
+std::expected<std::string, std::error_code> ConfigurableComponentImpl::getProperty(const std::string_view name) const {
const std::lock_guard<std::mutex> lock(configuration_mutex_);
const auto it = supported_properties_.find(name);
- if (it == supported_properties_.end()) { return nonstd::make_unexpected(PropertyErrorCode::NotSupportedProperty); }
+ if (it == supported_properties_.end()) { return std::unexpected{PropertyErrorCode::NotSupportedProperty}; }
const Property& prop = it->second;
return prop.getValue() | utils::transform([](const std::string_view value_view) -> std::string { return std::string{value_view}; });
}
-nonstd::expected<void, std::error_code> ConfigurableComponentImpl::setProperty(const std::string_view name, std::string value) {
+std::expected<void, std::error_code> ConfigurableComponentImpl::setProperty(const std::string_view name, std::string value) {
const std::lock_guard<std::mutex> lock(configuration_mutex_);
const auto it = supported_properties_.find(name);
- if (it == supported_properties_.end()) { return nonstd::make_unexpected(PropertyErrorCode::NotSupportedProperty); }
+ if (it == supported_properties_.end()) { return std::unexpected{PropertyErrorCode::NotSupportedProperty}; }
Property& prop = it->second;
return prop.setValue(std::move(value));
}
-nonstd::expected<void, std::error_code> ConfigurableComponentImpl::clearProperty(const std::string_view name) {
+std::expected<void, std::error_code> ConfigurableComponentImpl::clearProperty(const std::string_view name) {
const std::lock_guard<std::mutex> lock(configuration_mutex_);
const auto it = supported_properties_.find(name);
- if (it == supported_properties_.end()) { return nonstd::make_unexpected(PropertyErrorCode::NotSupportedProperty); }
+ if (it == supported_properties_.end()) { return std::unexpected{PropertyErrorCode::NotSupportedProperty}; }
Property& prop = it->second;
prop.clearValues();
return {};
}
-nonstd::expected<void, std::error_code> ConfigurableComponentImpl::appendProperty(const std::string_view name, std::string value) {
+std::expected<void, std::error_code> ConfigurableComponentImpl::appendProperty(const std::string_view name, std::string value) {
const std::lock_guard<std::mutex> lock(configuration_mutex_);
const auto it = supported_properties_.find(name);
- if (it == supported_properties_.end()) { return nonstd::make_unexpected(PropertyErrorCode::NotSupportedProperty); }
+ if (it == supported_properties_.end()) { return std::unexpected{PropertyErrorCode::NotSupportedProperty}; }
Property& prop = it->second;
return prop.appendValue(std::move(value));
}
-nonstd::expected<std::string, std::error_code> ConfigurableComponentImpl::getDynamicProperty(const std::string_view name) const {
+std::expected<std::string, std::error_code> ConfigurableComponentImpl::getDynamicProperty(const std::string_view name) const {
const std::lock_guard<std::mutex> lock(configuration_mutex_);
if (!supportsDynamicProperties()) {
- return nonstd::make_unexpected(PropertyErrorCode::DynamicPropertiesNotSupported);
+ return std::unexpected{PropertyErrorCode::DynamicPropertiesNotSupported};
}
const auto it = dynamic_properties_.find(name);
- if (it == dynamic_properties_.end()) { return nonstd::make_unexpected(PropertyErrorCode::PropertyNotSet); }
+ if (it == dynamic_properties_.end()) { return std::unexpected{PropertyErrorCode::PropertyNotSet}; }
const Property& prop = it->second;
return prop.getValue() | utils::transform([](const std::string_view value_view) -> std::string { return std::string{value_view}; });
}
-nonstd::expected<void, std::error_code> ConfigurableComponentImpl::setDynamicProperty(std::string name, std::string value) {
+std::expected<void, std::error_code> ConfigurableComponentImpl::setDynamicProperty(std::string name, std::string value) {
const std::lock_guard<std::mutex> lock(configuration_mutex_);
if (!supportsDynamicProperties()) {
- return nonstd::make_unexpected(PropertyErrorCode::DynamicPropertiesNotSupported);
+ return std::unexpected{PropertyErrorCode::DynamicPropertiesNotSupported};
}
Property& prop = dynamic_properties_[std::move(name)];
prop.setSupportsExpressionLanguage(true); // all dynamic properties support EL
return prop.setValue(std::move(value));
}
-nonstd::expected<void, std::error_code> ConfigurableComponentImpl::appendDynamicProperty(const std::string_view name, std::string value) {
+std::expected<void, std::error_code> ConfigurableComponentImpl::appendDynamicProperty(const std::string_view name, std::string value) {
const std::lock_guard<std::mutex> lock(configuration_mutex_);
if (!supportsDynamicProperties()) {
- return nonstd::make_unexpected(PropertyErrorCode::DynamicPropertiesNotSupported);
+ return std::unexpected{PropertyErrorCode::DynamicPropertiesNotSupported};
}
Property& prop = dynamic_properties_[std::string{name}];
prop.setSupportsExpressionLanguage(true); // all dynamic properties support EL
@@ -122,20 +122,20 @@ std::map<std::string, std::string> ConfigurableComponentImpl::getDynamicProperti
return result;
}
-[[nodiscard]] nonstd::expected<std::vector<std::string>, std::error_code> ConfigurableComponentImpl::getAllPropertyValues(const std::string_view name) const {
+[[nodiscard]] std::expected<std::vector<std::string>, std::error_code> ConfigurableComponentImpl::getAllPropertyValues(const std::string_view name) const {
std::lock_guard<std::mutex> lock(configuration_mutex_);
const auto it = supported_properties_.find(name);
- if (it == supported_properties_.end()) { return nonstd::make_unexpected(PropertyErrorCode::NotSupportedProperty); }
+ if (it == supported_properties_.end()) { return std::unexpected{PropertyErrorCode::NotSupportedProperty}; }
const Property& prop = it->second;
return prop.getAllValues() | utils::transform([](const auto& values) -> std::vector<std::string> { return std::vector<std::string>{values.begin(), values.end()}; });
}
-[[nodiscard]] nonstd::expected<std::vector<std::string>, std::error_code> ConfigurableComponentImpl::getAllDynamicPropertyValues(const std::string_view name) const {
+[[nodiscard]] std::expected<std::vector<std::string>, std::error_code> ConfigurableComponentImpl::getAllDynamicPropertyValues(const std::string_view name) const {
std::lock_guard<std::mutex> lock(configuration_mutex_);
const auto it = dynamic_properties_.find(name);
- if (it == dynamic_properties_.end()) { return nonstd::make_unexpected(PropertyErrorCode::PropertyNotSet); }
+ if (it == dynamic_properties_.end()) { return std::unexpected{PropertyErrorCode::PropertyNotSet}; }
const Property& prop = it->second;
return prop.getAllValues() | utils::transform([](const auto& values) -> std::vector<std::string> { return std::vector<std::string>{values.begin(), values.end()}; });
}
@@ -149,10 +149,10 @@ std::map<std::string, std::string> ConfigurableComponentImpl::getDynamicProperti
return supported_properties;
}
-[[nodiscard]] nonstd::expected<Property, std::error_code> ConfigurableComponentImpl::getSupportedProperty(const std::string_view name) const {
+[[nodiscard]] std::expected<Property, std::error_code> ConfigurableComponentImpl::getSupportedProperty(const std::string_view name) const {
std::lock_guard<std::mutex> lock(configuration_mutex_);
const auto it = supported_properties_.find(name);
- if (it == supported_properties_.end()) { return nonstd::make_unexpected(PropertyErrorCode::NotSupportedProperty); }
+ if (it == supported_properties_.end()) { return std::unexpected{PropertyErrorCode::NotSupportedProperty}; }
return it->second;
}
diff --git a/core-framework/src/core/Property.cpp b/core-framework/src/core/Property.cpp
index a55159cab..13f83ee56 100644
--- a/core-framework/src/core/Property.cpp
+++ b/core-framework/src/core/Property.cpp
@@ -119,30 +119,30 @@ Property::Property(std::string name, std::string description)
Property::Property() : is_required_(false), is_collection_(false), validator_{&StandardPropertyValidators::ALWAYS_VALID_VALIDATOR}, supports_el_(false), is_transient_(false) {}
-nonstd::expected<std::string_view, std::error_code> Property::getValue() const {
+std::expected<std::string_view, std::error_code> Property::getValue() const {
if (!values_.empty()) { return values_.back(); }
if (default_value_) { return *default_value_; }
- return nonstd::make_unexpected(PropertyErrorCode::PropertyNotSet);
+ return std::unexpected{PropertyErrorCode::PropertyNotSet};
}
-nonstd::expected<std::span<const std::string>, std::error_code> Property::getAllValues() const {
+std::expected<std::span<const std::string>, std::error_code> Property::getAllValues() const {
return std::span{values_};
}
-nonstd::expected<void, std::error_code> Property::setValue(std::string value) {
- if (!validator_->validate(value)) { return nonstd::make_unexpected(PropertyErrorCode::ValidationFailed); }
+std::expected<void, std::error_code> Property::setValue(std::string value) {
+ if (!validator_->validate(value)) { return std::unexpected{PropertyErrorCode::ValidationFailed}; }
if (!allowed_values_.empty() && ranges::none_of(allowed_values_, [&](const auto& allowed_value) -> bool { return utils::string::toLower(allowed_value) == utils::string::toLower(value); })) {
- return nonstd::make_unexpected(PropertyErrorCode::ValidationFailed);
+ return std::unexpected{PropertyErrorCode::ValidationFailed};
}
values_.clear();
values_.push_back(std::move(value));
return {};
}
-nonstd::expected<void, std::error_code> Property::appendValue(std::string value) {
- if (!validator_->validate(value)) { return nonstd::make_unexpected(PropertyErrorCode::ValidationFailed); }
+std::expected<void, std::error_code> Property::appendValue(std::string value) {
+ if (!validator_->validate(value)) { return std::unexpected{PropertyErrorCode::ValidationFailed}; }
if (!allowed_values_.empty() && ranges::none_of(allowed_values_, [&](const auto& allowed_value) -> bool { return utils::string::toLower(allowed_value) == utils::string::toLower(value); })) {
- return nonstd::make_unexpected(PropertyErrorCode::ValidationFailed);
+ return std::unexpected{PropertyErrorCode::ValidationFailed};
}
if (values_.empty() && default_value_) { values_.push_back(*default_value_); }
values_.push_back(std::move(value));
diff --git a/core-framework/src/utils/Cron.cpp b/core-framework/src/utils/Cron.cpp
index 93dc84b66..af0920166 100644
--- a/core-framework/src/utils/Cron.cpp
+++ b/core-framework/src/utils/Cron.cpp
@@ -46,14 +46,15 @@ namespace org::apache::nifi::minifi::utils {
namespace {
// https://github.com/HowardHinnant/date/issues/550
-// Due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78714
-// the month parsing with '%b' and the weekday parsing with '%a' is case-sensitive in gcc11
-// This has been fixed in gcc13
+// Due to libstdc++ bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78714
+// the month parsing with '%b' and the weekday parsing with '%a' can be case-sensitive.
+// Normalizing to Title Case prevents parsing failures across all GCC versions.
std::stringstream getCaseInsensitiveCStream(const std::string& str) {
-#if defined(__GNUC__) && (__GNUC__ < 13)
+#if defined(__GLIBCXX__) || defined(__GLIBCPP__)
auto patched_str = string::toLower(str);
- if (!patched_str.empty())
+ if (!patched_str.empty()) {
patched_str[0] = static_cast<char>(std::toupper(static_cast<unsigned char>(patched_str[0])));
+ }
auto stream = std::stringstream{patched_str};
#else
auto stream = std::stringstream{str};
@@ -62,7 +63,6 @@ std::stringstream getCaseInsensitiveCStream(const std::string& str) {
return stream;
}
-
template<class T>
std::optional<T> fromChars(const std::string& input) {
T t{};
diff --git a/core-framework/src/utils/file/FileUtils.cpp b/core-framework/src/utils/file/FileUtils.cpp
index 1e8dc61ff..84f5fe3f4 100644
--- a/core-framework/src/utils/file/FileUtils.cpp
+++ b/core-framework/src/utils/file/FileUtils.cpp
@@ -132,11 +132,11 @@ std::chrono::file_clock::time_point fileTimePointFromFileTime(const FILETIME& fi
return std::chrono::file_clock::time_point{duration};
}
-nonstd::expected<WindowsFileTimes, std::error_code> getWindowsFileTimes(const std::filesystem::path& path) {
+std::expected<WindowsFileTimes, std::error_code> getWindowsFileTimes(const std::filesystem::path& path) {
WIN32_FILE_ATTRIBUTE_DATA file_attributes;
auto get_file_attributes_result = GetFileAttributesExW(path.c_str(), GetFileExInfoStandard, &file_attributes);
if (!get_file_attributes_result)
- return nonstd::make_unexpected(utils::OsUtils::windowsErrorToErrorCode(GetLastError()));
+ return std::unexpected{utils::OsUtils::windowsErrorToErrorCode(GetLastError())};
return WindowsFileTimes{.creation_time = fileTimePointFromFileTime(file_attributes.ftCreationTime),
.last_access_time = fileTimePointFromFileTime(file_attributes.ftLastAccessTime),
.last_write_time = fileTimePointFromFileTime(file_attributes.ftLastWriteTime)};
diff --git a/core-framework/src/utils/net/DNS.cpp b/core-framework/src/utils/net/DNS.cpp
index 160277dac..726a41ccd 100644
--- a/core-framework/src/utils/net/DNS.cpp
+++ b/core-framework/src/utils/net/DNS.cpp
@@ -25,11 +25,11 @@
namespace org::apache::nifi::minifi::utils::net {
-nonstd::expected<asio::ip::address, std::error_code> addressFromString(const std::string_view ip_address_str) {
+std::expected<asio::ip::address, std::error_code> addressFromString(const std::string_view ip_address_str) {
std::error_code ip_address_from_string_error;
auto ip_address = asio::ip::make_address(ip_address_str, ip_address_from_string_error);
if (ip_address_from_string_error)
- return nonstd::make_unexpected(ip_address_from_string_error);
+ return std::unexpected{ip_address_from_string_error};
return ip_address;
}
@@ -41,7 +41,7 @@ asio::awaitable<std::tuple<std::error_code, asio::ip::basic_resolver<asio::ip::u
}
} // namespace
-nonstd::expected<std::string, std::error_code> reverseDnsLookup(const asio::ip::address& ip_address, std::chrono::steady_clock::duration timeout_duration) {
+std::expected<std::string, std::error_code> reverseDnsLookup(const asio::ip::address& ip_address, std::chrono::steady_clock::duration timeout_duration) {
asio::io_context io_context;
std::error_code resolve_error;
@@ -54,11 +54,11 @@ nonstd::expected<std::string, std::error_code> reverseDnsLookup(const asio::ip::
io_context.run();
if (resolve_error)
- return nonstd::make_unexpected(resolve_error);
+ return std::unexpected{resolve_error};
if (!results.empty()) {
return results.begin()->host_name();
}
- return nonstd::make_unexpected(std::make_error_code(std::errc::host_unreachable));
+ return std::unexpected{std::make_error_code(std::errc::host_unreachable)};
}
std::string getMyHostName() {
diff --git a/docker/rockylinux/Dockerfile b/docker/rockylinux/Dockerfile
index 07069e525..d10a82aba 100644
--- a/docker/rockylinux/Dockerfile
+++ b/docker/rockylinux/Dockerfile
@@ -41,7 +41,7 @@ COPY . ${MINIFI_BASE_DIR}
# Install the system dependencies needed for a build
# ccache is in EPEL
-RUN dnf -y install epel-release && dnf -y install gcc-toolset-12 sudo git which make libarchive ccache ca-certificates perl patch bison flex libtool cmake rpmdevtools && \
+RUN dnf -y install epel-release && dnf -y install gcc-toolset-14 sudo git which make libarchive ccache ca-certificates perl patch bison flex libtool cmake rpmdevtools && \
if echo "$MINIFI_OPTIONS" | grep -q "ENABLE_ALL=ON\|ENABLE_PYTHON_SCRIPTING=ON\|ENABLE_OPC=ON"; then dnf -y --enablerepo=devel install python3-devel; fi && \
if echo "$MINIFI_OPTIONS" | grep -q "ENABLE_SFTP=ON" && [ "${DOCKER_SKIP_TESTS}" == "OFF" ]; then dnf -y install java-1.8.0-openjdk maven; fi
@@ -52,16 +52,13 @@ RUN cd $MINIFI_BASE_DIR && \
RUN groupadd -g ${GID} ${USER} && useradd -g ${GID} ${USER} && \
chown -R ${USER}:${USER} ${MINIFI_BASE_DIR}
-# Patching standard header to avoid https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105651
-RUN patch -p1 /opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/basic_string.tcc ${MINIFI_BASE_DIR}/thirdparty/libstdc++/avoid_bogus_Wrestrict_PR105651.patch
-
USER ${USER}
# Perform the build
RUN cd $MINIFI_BASE_DIR && \
mkdir build && \
cd build && \
- source /opt/rh/gcc-toolset-12/enable && \
+ source /opt/rh/gcc-toolset-14/enable && \
export PATH=/usr/lib64/ccache${PATH:+:${PATH}} && \
export CCACHE_DIR=${MINIFI_BASE_DIR}/.ccache && \
cmake -DSTATIC_BUILD= -DSKIP_TESTS=${DOCKER_SKIP_TESTS} ${MINIFI_OPTIONS} -DAWS_ENABLE_UNITY_BUILD=OFF -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" .. && \
@@ -71,7 +68,7 @@ RUN cd $MINIFI_BASE_DIR && \
RUN if [[ "${DOCKER_CREATE_RPM}" == "ON" ]] ; then \
cd $MINIFI_BASE_DIR && \
cd build && \
- source /opt/rh/gcc-toolset-12/enable && \
+ source /opt/rh/gcc-toolset-14/enable && \
cmake -DMINIFI_PACKAGING_TYPE=RPM .. && \
make -j "$(nproc)" package&& \
../packaging/rpm/check_rpm_contents.sh *.rpm expected-rpm-contents.txt; \
diff --git a/extension-framework/CMakeLists.txt b/extension-framework/CMakeLists.txt
index 9bcfd285c..679f937d9 100644
--- a/extension-framework/CMakeLists.txt
+++ b/extension-framework/CMakeLists.txt
@@ -18,13 +18,10 @@ target_link_libraries(minifi-extension-framework PUBLIC minifi-api)
include(RangeV3)
include(Asio)
include(MagicEnum)
-list(APPEND CORE_LIBRARIES ZLIB::ZLIB concurrentqueue RapidJSON spdlog Threads::Threads gsl-lite range-v3 expected-lite asio magic_enum OpenSSL::Crypto OpenSSL::SSL CURL::libcurl RapidJSON)
+list(APPEND CORE_LIBRARIES ZLIB::ZLIB concurrentqueue RapidJSON spdlog Threads::Threads gsl-lite range-v3 asio magic_enum OpenSSL::Crypto OpenSSL::SSL CURL::libcurl RapidJSON)
if(NOT WIN32)
list(APPEND CORE_LIBRARIES OSSP::libuuid++)
endif()
-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9)
- list(APPEND CORE_LIBRARIES stdc++fs)
-endif()
target_link_libraries(minifi-extension-framework PUBLIC ${CMAKE_DL_LIBS} ${CORE_LIBRARIES})
if (APPLE)
target_link_libraries(minifi-extension-framework PUBLIC "-framework CoreFoundation -framework SystemConfiguration")
diff --git a/extension-framework/cpp-extension-lib/include/api/core/ProcessContext.h b/extension-framework/cpp-extension-lib/include/api/core/ProcessContext.h
index 50f5ebaa5..442f9bbf4 100644
--- a/extension-framework/cpp-extension-lib/include/api/core/ProcessContext.h
+++ b/extension-framework/cpp-extension-lib/include/api/core/ProcessContext.h
@@ -18,9 +18,9 @@
#pragma once
#include <string>
+#include <expected>
#include "minifi-c.h"
-#include "nonstd/expected.hpp"
#include "minifi-cpp/core/PropertyDefinition.h"
#include "api/core/FlowFile.h"
@@ -30,8 +30,8 @@ class ProcessContext {
public:
explicit ProcessContext(MinifiProcessContext* impl): impl_(impl) {}
- nonstd::expected<std::string, std::error_code> getProperty(std::string_view name, const FlowFile* flow_file = nullptr) const;
- nonstd::expected<std::string, std::error_code> getProperty(const minifi::core::PropertyReference& property_reference, const FlowFile* flow_file = nullptr) const {
+ std::expected<std::string, std::error_code> getProperty(std::string_view name, const FlowFile* flow_file = nullptr) const;
+ std::expected<std::string, std::error_code> getProperty(const minifi::core::PropertyReference& property_reference, const FlowFile* flow_file = nullptr) const {
return getProperty(property_reference.name, flow_file);
}
diff --git a/extension-framework/cpp-extension-lib/src/core/ProcessContext.cpp b/extension-framework/cpp-extension-lib/src/core/ProcessContext.cpp
index 58016d804..958274d7d 100644
--- a/extension-framework/cpp-extension-lib/src/core/ProcessContext.cpp
+++ b/extension-framework/cpp-extension-lib/src/core/ProcessContext.cpp
@@ -21,7 +21,7 @@
namespace org::apache::nifi::minifi::api::core {
-nonstd::expected<std::string, std::error_code> ProcessContext::getProperty(std::string_view name, const FlowFile* flow_file) const {
+std::expected<std::string, std::error_code> ProcessContext::getProperty(std::string_view name, const FlowFile* flow_file) const {
std::optional<std::string> value;
MinifiStatus status = MinifiProcessContextGetProperty(impl_, utils::toStringView(name), flow_file ? flow_file->get() : MINIFI_NULL,
[] (void* data, MinifiStringView result) {
@@ -29,7 +29,7 @@ nonstd::expected<std::string, std::error_code> ProcessContext::getProperty(std::
}, &value);
if (!value) {
- return nonstd::make_unexpected(utils::make_error_code(status));
+ return std::unexpected{utils::make_error_code(status)};
}
return value.value();
}
diff --git a/extensions/aws/processors/PutKinesisStream.cpp b/extensions/aws/processors/PutKinesisStream.cpp
index 2ce4b7872..432597606 100644
--- a/extensions/aws/processors/PutKinesisStream.cpp
+++ b/extensions/aws/processors/PutKinesisStream.cpp
@@ -53,7 +53,7 @@ void PutKinesisStream::onSchedule(core::ProcessContext& context, core::ProcessSe
}
}
-nonstd::expected<Aws::Kinesis::Model::PutRecordsRequestEntry, PutKinesisStream::BatchItemError> PutKinesisStream::createEntryFromFlowFile(const core::ProcessContext& context,
+std::expected<Aws::Kinesis::Model::PutRecordsRequestEntry, PutKinesisStream::BatchItemError> PutKinesisStream::createEntryFromFlowFile(const core::ProcessContext& context,
core::ProcessSession& session,
const std::shared_ptr<core::FlowFile>& flow_file) const {
Aws::Kinesis::Model::PutRecordsRequestEntry entry;
@@ -62,7 +62,7 @@ nonstd::expected<Aws::Kinesis::Model::PutRecordsRequestEntry, PutKinesisStream::
const auto [status, buffer] = session.readBuffer(flow_file);
if (io::isError(status)) {
logger_->log_error("Couldn't read content from {}", flow_file->getUUIDStr());
- return nonstd::make_unexpected(BatchItemError{.error_message = "Failed to read content", .error_code = std::nullopt});
+ return std::unexpected{BatchItemError{.error_message = "Failed to read content", .error_code = std::nullopt}};
}
Aws::Utils::ByteBuffer aws_buffer(reinterpret_cast<const unsigned char*>(buffer.data()), buffer.size());
entry.SetData(aws_buffer);
@@ -122,9 +122,9 @@ void PutKinesisStream::processBatch(StreamBatch& stream_batch, const Aws::Kinesi
const auto put_record_result = client.PutRecords(stream_batch.request);
if (!put_record_result.IsSuccess()) {
ranges::for_each(stream_batch.items, [&](auto& item) {
- item.result = nonstd::make_unexpected(BatchItemError{
+ item.result = std::unexpected{BatchItemError{
.error_message = put_record_result.GetError().GetMessage(),
- .error_code = std::to_string(static_cast<int>(put_record_result.GetError().GetResponseCode()))});
+ .error_code = std::to_string(static_cast<int>(put_record_result.GetError().GetResponseCode()))}};
});
return;
}
@@ -134,9 +134,9 @@ void PutKinesisStream::processBatch(StreamBatch& stream_batch, const Aws::Kinesi
logger_->log_critical("PutKinesisStream record size ({}) and result size ({}) mismatch in {} cannot tell which record succeeded and which didnt",
stream_batch.items.size(), result_records.size(), stream_batch.request.GetStreamName());
ranges::for_each(stream_batch.items, [&](auto& item) {
- item.result = nonstd::make_unexpected(BatchItemError{
+ item.result = std::unexpected{BatchItemError{
.error_message = "Record size mismatch",
- .error_code = std::nullopt});
+ .error_code = std::nullopt}};
});
return;
}
@@ -145,7 +145,7 @@ void PutKinesisStream::processBatch(StreamBatch& stream_batch, const Aws::Kinesi
auto& [flow_file, result] = stream_batch.items[i];
const auto& result_record = result_records[i];
if (!result_record.GetErrorCode().empty()) {
- result = nonstd::make_unexpected(BatchItemError{.error_message = result_record.GetErrorMessage(), .error_code = result_record.GetErrorCode()});
+ result = std::unexpected{BatchItemError{.error_message = result_record.GetErrorMessage(), .error_code = result_record.GetErrorCode()}};
} else {
result = BatchItemResult{.sequence_number = result_record.GetSequenceNumber(), .shard_id = result_record.GetShardId()};
}
diff --git a/extensions/aws/processors/PutKinesisStream.h b/extensions/aws/processors/PutKinesisStream.h
index a20d60653..524155b28 100644
--- a/extensions/aws/processors/PutKinesisStream.h
+++ b/extensions/aws/processors/PutKinesisStream.h
@@ -108,7 +108,7 @@ class PutKinesisStream : public AwsProcessor { // NOLINT(cppcoreguidelines-spec
};
struct BatchItem {
std::shared_ptr<core::FlowFile> flow_file;
- nonstd::expected<BatchItemResult, BatchItemError> result;
+ std::expected<BatchItemResult, BatchItemError> result;
};
struct StreamBatch {
uint64_t batch_size = 0;
@@ -116,7 +116,7 @@ class PutKinesisStream : public AwsProcessor { // NOLINT(cppcoreguidelines-spec
Aws::Kinesis::Model::PutRecordsRequest request;
};
- nonstd::expected<Aws::Kinesis::Model::PutRecordsRequestEntry, BatchItemError> createEntryFromFlowFile(const core::ProcessContext& context,
+ std::expected<Aws::Kinesis::Model::PutRecordsRequestEntry, BatchItemError> createEntryFromFlowFile(const core::ProcessContext& context,
core::ProcessSession& session,
const std::shared_ptr<core::FlowFile>& flow_file) const;
diff --git a/extensions/civetweb/processors/ListenHTTP.h b/extensions/civetweb/processors/ListenHTTP.h
index 5952d3236..3c10a4c0d 100644
--- a/extensions/civetweb/processors/ListenHTTP.h
+++ b/extensions/civetweb/processors/ListenHTTP.h
@@ -175,7 +175,7 @@ class ListenHTTP : public core::ProcessorImpl {
FailureReason reason;
std::promise<void> ret;
};
- using Request = std::promise<nonstd::expected<RequestValue, FailureValue>>;
+ using Request = std::promise<std::expected<RequestValue, FailureValue>>;
Handler(std::string base_uri,
std::optional<std::string> flow_id,
@@ -211,7 +211,7 @@ class ListenHTTP : public core::ProcessorImpl {
while (dequeueRequest(req)) {
std::promise<void> req_done_promise;
auto req_done = req_done_promise.get_future();
- req.set_value(nonstd::make_unexpected(FailureValue{Handler::FailureReason::PROCESSOR_SHUTDOWN, std::move(req_done_promise)}));
+ req.set_value(std::unexpected{FailureValue{Handler::FailureReason::PROCESSOR_SHUTDOWN, std::move(req_done_promise)}});
req_done.wait();
}
}
diff --git a/extensions/couchbase/CMakeLists.txt b/extensions/couchbase/CMakeLists.txt
index 3c7ac35e1..632c014e3 100644
--- a/extensions/couchbase/CMakeLists.txt
+++ b/extensions/couchbase/CMakeLists.txt
@@ -21,11 +21,7 @@ if (NOT (ENABLE_ALL OR ENABLE_COUCHBASE))
return()
endif()
-if (WIN32)
- include(Couchbase_1_0_2)
-else()
- include(Couchbase)
-endif()
+include(Couchbase)
include(${CMAKE_SOURCE_DIR}/extensions/ExtensionHeader.txt)
@@ -33,8 +29,13 @@ file(GLOB SOURCES "*.cpp" "controllerservices/*.cpp" "processors/*.cpp")
add_minifi_library(minifi-couchbase SHARED ${SOURCES})
-target_include_directories(minifi-couchbase PRIVATE BEFORE "${CMAKE_CURRENT_SOURCE_DIR}" "controllerservices" "processors" ${COUCHBASE_INCLUDE_DIR})
-target_link_libraries(minifi-couchbase ${LIBMINIFI} couchbase_cxx_client_static hdr_histogram_static snappy llhttp::llhttp)
+target_include_directories(minifi-couchbase PRIVATE BEFORE "${CMAKE_CURRENT_SOURCE_DIR}" "controllerservices" "processors")
+target_include_directories(minifi-couchbase SYSTEM PRIVATE ${COUCHBASE_INCLUDE_DIR})
+# Demote preprocessor warnings so <ciso646> doesn't break the build
+if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ target_compile_options(minifi-couchbase PRIVATE -Wno-error=cpp)
+endif()
+target_link_libraries(minifi-couchbase ${LIBMINIFI} couchbase_cxx_client::couchbase_cxx_client_static hdr_histogram_static snappy llhttp::llhttp taocpp::json)
register_extension(minifi-couchbase "COUCHBASE EXTENSIONS" COUCHBASE-EXTENSIONS "This enables Couchbase support" "extensions/couchbase/tests")
diff --git a/extensions/couchbase/controllerservices/CouchbaseClusterService.cpp b/extensions/couchbase/controllerservices/CouchbaseClusterService.cpp
index 6c773a463..7c695bca4 100644
--- a/extensions/couchbase/controllerservices/CouchbaseClusterService.cpp
+++ b/extensions/couchbase/controllerservices/CouchbaseClusterService.cpp
@@ -95,20 +95,20 @@ CouchbaseClient::CouchbaseClient(std::string connection_string, std::string user
return cluster_options;
}
-nonstd::expected<::couchbase::collection, CouchbaseErrorType> CouchbaseClient::getCollection(const CouchbaseCollection& collection) {
+std::expected<::couchbase::collection, CouchbaseErrorType> CouchbaseClient::getCollection(const CouchbaseCollection& collection) {
auto connection_result = establishConnection();
if (!connection_result) {
- return nonstd::make_unexpected(connection_result.error());
+ return std::unexpected{connection_result.error()};
}
std::lock_guard<std::mutex> lock(cluster_mutex_);
return cluster_->bucket(collection.bucket_name).scope(collection.scope_name).collection(collection.collection_name);
}
-nonstd::expected<CouchbaseUpsertResult, CouchbaseErrorType> CouchbaseClient::upsert(
+std::expected<CouchbaseUpsertResult, CouchbaseErrorType> CouchbaseClient::upsert(
const CouchbaseCollection& collection, CouchbaseValueType document_type, const std::string& document_id, const std::vector<std::byte>& buffer, const ::couchbase::upsert_options& options) {
auto collection_result = getCollection(collection);
if (!collection_result.has_value()) {
- return nonstd::make_unexpected(collection_result.error());
+ return std::unexpected{collection_result.error()};
}
std::pair<::couchbase::error, ::couchbase::mutation_result> result;
@@ -126,11 +126,11 @@ nonstd::expected<CouchbaseUpsertResult, CouchbaseErrorType> CouchbaseClient::ups
if (getErrorType(upsert_err.ec()) == CouchbaseErrorType::TEMPORARY && upsert_err.ec().value() != static_cast<int>(::couchbase::errc::common::ambiguous_timeout)) {
logger_->log_error("Failed to upsert document '{}' to collection '{}.{}.{}' due to temporary issue, error code: '{}', message: '{}'", document_id, collection.bucket_name, collection.scope_name,
collection.collection_name, upsert_err.ec(), upsert_err.message());
- return nonstd::make_unexpected(CouchbaseErrorType::TEMPORARY);
+ return std::unexpected{CouchbaseErrorType::TEMPORARY};
}
logger_->log_error("Failed to upsert document '{}' to collection '{}.{}.{}' with error code: '{}', message: '{}'", document_id, collection.bucket_name, collection.scope_name,
collection.collection_name, upsert_err.ec(), upsert_err.message());
- return nonstd::make_unexpected(CouchbaseErrorType::FATAL);
+ return std::unexpected{CouchbaseErrorType::FATAL};
} else {
return CouchbaseUpsertResult {
{
@@ -144,10 +144,10 @@ nonstd::expected<CouchbaseUpsertResult, CouchbaseErrorType> CouchbaseClient::ups
}
}
-nonstd::expected<CouchbaseGetResult, CouchbaseErrorType> CouchbaseClient::get(const CouchbaseCollection& collection, const std::string& document_id, CouchbaseValueType return_type) {
+std::expected<CouchbaseGetResult, CouchbaseErrorType> CouchbaseClient::get(const CouchbaseCollection& collection, const std::string& document_id, CouchbaseValueType return_type) {
auto collection_result = getCollection(collection);
if (!collection_result.has_value()) {
- return nonstd::make_unexpected(collection_result.error());
+ return std::unexpected{collection_result.error()};
}
::couchbase::get_options options;
@@ -156,14 +156,14 @@ nonstd::expected<CouchbaseGetResult, CouchbaseErrorType> CouchbaseClient::get(co
if (get_err.ec()) {
if (getErrorType(get_err.ec()) == CouchbaseErrorType::TEMPORARY) {
logger_->log_error("Failed to get document '{}' from collection '{}.{}.{}' due to timeout", document_id, collection.bucket_name, collection.scope_name, collection.collection_name);
- return nonstd::make_unexpected(CouchbaseErrorType::TEMPORARY);
+ return std::unexpected{CouchbaseErrorType::TEMPORARY};
}
logger_->log_error("Failed to get document '{}' from collection '{}.{}.{}' with error code: '{}', message: '{}'", document_id, collection.bucket_name, collection.scope_name,
collection.collection_name, get_err.ec(), get_err.message());
if (get_err.cause()) {
logger_->log_error("... root cause error code: '{}', message: '{}'", get_err.cause()->ec(), get_err.cause()->message());
}
- return nonstd::make_unexpected(CouchbaseErrorType::FATAL);
+ return std::unexpected{CouchbaseErrorType::FATAL};
} else {
try {
CouchbaseGetResult result;
@@ -183,7 +183,7 @@ nonstd::expected<CouchbaseGetResult, CouchbaseErrorType> CouchbaseClient::get(co
} catch (const std::exception& ex) {
logger_->log_error("Failed to get content for document '{}' from collection '{}.{}.{}' with the following exception: '{}'", document_id, collection.bucket_name, collection.scope_name,
collection.collection_name, ex.what());
- return nonstd::make_unexpected(CouchbaseErrorType::FATAL);
+ return std::unexpected{CouchbaseErrorType::FATAL};
}
}
}
@@ -196,7 +196,7 @@ void CouchbaseClient::close() {
cluster_ = std::nullopt;
}
-nonstd::expected<void, CouchbaseErrorType> CouchbaseClient::establishConnection() {
+std::expected<void, CouchbaseErrorType> CouchbaseClient::establishConnection() {
std::lock_guard<std::mutex> lock(cluster_mutex_);
if (cluster_) {
return {};
@@ -205,7 +205,7 @@ nonstd::expected<void, CouchbaseErrorType> CouchbaseClient::establishConnection(
auto [connect_err, cluster] = ::couchbase::cluster::connect(connection_string_, cluster_options_).get();
if (connect_err.ec()) {
logger_->log_error("Failed to connect to Couchbase cluster with error code: '{}' and message: '{}'", connect_err.ec(), connect_err.message());
- return nonstd::make_unexpected(getErrorType(connect_err.ec()));
+ return std::unexpected{getErrorType(connect_err.ec())};
}
cluster_ = std::move(cluster);
diff --git a/extensions/couchbase/controllerservices/CouchbaseClusterService.h b/extensions/couchbase/controllerservices/CouchbaseClusterService.h
index f6cdddc52..3ae92029d 100644
--- a/extensions/couchbase/controllerservices/CouchbaseClusterService.h
+++ b/extensions/couchbase/controllerservices/CouchbaseClusterService.h
@@ -82,15 +82,15 @@ class CouchbaseClient {
CouchbaseClient& operator=(CouchbaseClient&&) = delete;
CouchbaseClient& operator=(const CouchbaseClient&) = delete;
- nonstd::expected<CouchbaseUpsertResult, CouchbaseErrorType> upsert(const CouchbaseCollection& collection, CouchbaseValueType document_type, const std::string& document_id,
+ std::expected<CouchbaseUpsertResult, CouchbaseErrorType> upsert(const CouchbaseCollection& collection, CouchbaseValueType document_type, const std::string& document_id,
const std::vector<std::byte>& buffer, const ::couchbase::upsert_options& options);
- nonstd::expected<CouchbaseGetResult, CouchbaseErrorType> get(const CouchbaseCollection& collection, const std::string& document_id, CouchbaseValueType return_type);
- nonstd::expected<void, CouchbaseErrorType> establishConnection();
+ std::expected<CouchbaseGetResult, CouchbaseErrorType> get(const CouchbaseCollection& collection, const std::string& document_id, CouchbaseValueType return_type);
+ std::expected<void, CouchbaseErrorType> establishConnection();
void close();
private:
::couchbase::cluster_options buildClusterOptions(std::string username, std::string password, minifi::controllers::SSLContextServiceInterface* ssl_context_service);
- nonstd::expected<::couchbase::collection, CouchbaseErrorType> getCollection(const CouchbaseCollection& collection);
+ std::expected<::couchbase::collection, CouchbaseErrorType> getCollection(const CouchbaseCollection& collection);
std::string connection_string_;
std::shared_ptr<core::logging::Logger> logger_;
@@ -140,13 +140,13 @@ class CouchbaseClusterService : public core::controller::ControllerServiceBase,
[[nodiscard]] ControllerServiceHandle* getControllerServiceHandle() override {return this;}
- virtual nonstd::expected<CouchbaseUpsertResult, CouchbaseErrorType> upsert(const CouchbaseCollection& collection, CouchbaseValueType document_type,
+ virtual std::expected<CouchbaseUpsertResult, CouchbaseErrorType> upsert(const CouchbaseCollection& collection, CouchbaseValueType document_type,
const std::string& document_id, const std::vector<std::byte>& buffer, const ::couchbase::upsert_options& options) {
gsl_Expects(client_);
return client_->upsert(collection, document_type, document_id, buffer, options);
}
- virtual nonstd::expected<CouchbaseGetResult, CouchbaseErrorType> get(const CouchbaseCollection& collection, const std::string& document_id, CouchbaseValueType return_type) {
+ virtual std::expected<CouchbaseGetResult, CouchbaseErrorType> get(const CouchbaseCollection& collection, const std::string& document_id, CouchbaseValueType return_type) {
gsl_Expects(client_);
return client_->get(collection, document_id, return_type);
}
diff --git a/extensions/couchbase/tests/CMakeLists.txt b/extensions/couchbase/tests/CMakeLists.txt
index 18caaeff0..d611fd138 100644
--- a/extensions/couchbase/tests/CMakeLists.txt
+++ b/extensions/couchbase/tests/CMakeLists.txt
@@ -29,6 +29,10 @@ FOREACH(testfile ${COUCHBASE_TESTS})
target_include_directories(${testfilename} PRIVATE BEFORE "${CMAKE_SOURCE_DIR}/extensions/couchbase/")
target_include_directories(${testfilename} PRIVATE BEFORE "${COUCHBASE_INCLUDE_DIR}")
+ # Demote preprocessor warnings so <ciso646> doesn't break the build
+ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ target_compile_options(${testfilename} PRIVATE -Wno-error=cpp)
+ endif()
createTests("${testfilename}")
target_link_libraries(${testfilename} Catch2WithMain)
target_link_libraries(${testfilename} minifi-couchbase)
diff --git a/extensions/couchbase/tests/MockCouchbaseClusterService.h b/extensions/couchbase/tests/MockCouchbaseClusterService.h
index 6566e85d4..e36532b55 100644
--- a/extensions/couchbase/tests/MockCouchbaseClusterService.h
+++ b/extensions/couchbase/tests/MockCouchbaseClusterService.h
@@ -53,7 +53,7 @@ class MockCouchbaseClusterService : public controllers::CouchbaseClusterService
void onEnable() override {}
void notifyStop() override {}
- nonstd::expected<CouchbaseUpsertResult, CouchbaseErrorType> upsert(const CouchbaseCollection& collection, CouchbaseValueType document_type, const std::string& document_id,
+ std::expected<CouchbaseUpsertResult, CouchbaseErrorType> upsert(const CouchbaseCollection& collection, CouchbaseValueType document_type, const std::string& document_id,
const std::vector<std::byte>& buffer, const ::couchbase::upsert_options& options) override {
collection_ = collection;
upsert_parameters_.document_type = document_type;
@@ -62,19 +62,19 @@ class MockCouchbaseClusterService : public controllers::CouchbaseClusterService
upsert_parameters_.options = options;
if (upsert_error_) {
- return nonstd::make_unexpected(*upsert_error_);
+ return std::unexpected{*upsert_error_};
} else {
return CouchbaseUpsertResult{{collection_.bucket_name, COUCHBASE_PUT_RESULT_CAS}, COUCHBASE_PUT_RESULT_SEQUENCE_NUMBER, COUCHBASE_PUT_RESULT_PARTITION_UUID, COUCHBASE_PUT_RESULT_PARTITION_ID};
}
}
- nonstd::expected<CouchbaseGetResult, CouchbaseErrorType> get(const CouchbaseCollection& collection, const std::string& document_id, CouchbaseValueType document_type) override {
+ std::expected<CouchbaseGetResult, CouchbaseErrorType> get(const CouchbaseCollection& collection, const std::string& document_id, CouchbaseValueType document_type) override {
collection_ = collection;
get_parameters_.document_id = document_id;
get_parameters_.document_type = document_type;
if (get_error_) {
- return nonstd::make_unexpected(*get_error_);
+ return std::unexpected{*get_error_};
} else {
if (document_type == CouchbaseValueType::String) {
return CouchbaseGetResult{{collection_.bucket_name, COUCHBASE_GET_RESULT_CAS}, COUCHBASE_GET_RESULT_EXPIRY, COUCHBASE_GET_RESULT_CONTENT};
diff --git a/extensions/elasticsearch/PostElasticsearch.cpp b/extensions/elasticsearch/PostElasticsearch.cpp
index b734f4306..bd80eef85 100644
--- a/extensions/elasticsearch/PostElasticsearch.cpp
+++ b/extensions/elasticsearch/PostElasticsearch.cpp
@@ -76,25 +76,25 @@ class ElasticPayload {
return result;
}
- static nonstd::expected<ElasticPayload, std::string> parse(core::ProcessSession& session, core::ProcessContext& context, const std::shared_ptr<core::FlowFile>& flow_file) {
+ static std::expected<ElasticPayload, std::string> parse(core::ProcessSession& session, core::ProcessContext& context, const std::shared_ptr<core::FlowFile>& flow_file) {
auto action = context.getProperty(PostElasticsearch::Action, flow_file.get());
if (!action || (action != "index" && action != "create" && action != "delete" && action != "update" && action != "upsert"))
- return nonstd::make_unexpected("Missing or invalid action");
+ return std::unexpected{"Missing or invalid action"};
auto index = context.getProperty(PostElasticsearch::Index, flow_file.get());
if (!index)
- return nonstd::make_unexpected("Missing index");
+ return std::unexpected{"Missing index"};
auto id = context.getProperty(PostElasticsearch::Identifier, flow_file.get()) | utils::toOptional();
if (!id && (action == "delete" || action == "update" || action == "upsert"))
- return nonstd::make_unexpected("Identifier is required for DELETE,UPDATE and UPSERT actions");
+ return std::unexpected{"Identifier is required for DELETE,UPDATE and UPSERT actions"};
std::optional<rapidjson::Document> payload;
if (action == "index" || action == "create") {
payload = rapidjson::Document(rapidjson::kObjectType);
utils::JsonInputCallback callback(*payload);
if (session.read(flow_file, std::ref(callback)) < 0) {
- return nonstd::make_unexpected("invalid flowfile content");
+ return std::unexpected{"invalid flowfile content"};
}
}
if (action == "update" || action == "upsert") {
@@ -102,7 +102,7 @@ class ElasticPayload {
rapidjson::Document doc_member(rapidjson::kObjectType, &payload->GetAllocator());
utils::JsonInputCallback callback(doc_member);
if (session.read(flow_file, std::ref(callback)) < 0) {
- return nonstd::make_unexpected("invalid flowfile content");
+ return std::unexpected{"invalid flowfile content"};
}
if (action == "upsert") {
action = "update";
@@ -152,21 +152,21 @@ class ElasticPayload {
std::optional<rapidjson::Document> payload_;
};
-nonstd::expected<rapidjson::Document, std::string> submitRequest(http::HTTPClient& client, const std::string& payload, const size_t expected_items) {
+std::expected<rapidjson::Document, std::string> submitRequest(http::HTTPClient& client, const std::string& payload, const size_t expected_items) {
client.setPostFields(payload);
if (!client.submit())
- return nonstd::make_unexpected("Submit failed");
+ return std::unexpected{"Submit failed"};
auto response_code = client.getResponseCode();
if (response_code != 200)
- return nonstd::make_unexpected("Error occurred: " + std::to_string(response_code) + ", " + client.getResponseBody().data());
+ return std::unexpected{"Error occurred: " + std::to_string(response_code) + ", " + client.getResponseBody().data()};
rapidjson::Document response;
rapidjson::ParseResult parse_result = response.Parse<rapidjson::kParseStopWhenDoneFlag>(client.getResponseBody().data());
if (parse_result.IsError())
- return nonstd::make_unexpected("Response is not valid json");
+ return std::unexpected{"Response is not valid json"};
if (!response.HasMember("items"))
- return nonstd::make_unexpected("Response is invalid");
+ return std::unexpected{"Response is invalid"};
if (response["items"].Size() != expected_items)
- return nonstd::make_unexpected("The number of responses dont match the number of requests");
+ return std::unexpected{"The number of responses dont match the number of requests"};
return response;
}
diff --git a/extensions/grafana-loki/PushGrafanaLoki.h b/extensions/grafana-loki/PushGrafanaLoki.h
index d44669074..35f6bc088 100644
--- a/extensions/grafana-loki/PushGrafanaLoki.h
+++ b/extensions/grafana-loki/PushGrafanaLoki.h
@@ -134,7 +134,7 @@ class PushGrafanaLoki : public core::ProcessorImpl {
static std::map<std::string, std::string> buildStreamLabelMap(core::ProcessContext& context);
void processBatch(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session);
- virtual nonstd::expected<void, std::string> submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) = 0;
+ virtual std::expected<void, std::string> submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) = 0;
void initializeHttpClient(core::ProcessContext& context);
void restoreStartPushTime(core::ProcessContext& context);
virtual void setUpStreamLabels(core::ProcessContext& context) = 0;
diff --git a/extensions/grafana-loki/PushGrafanaLokiGrpc.cpp b/extensions/grafana-loki/PushGrafanaLokiGrpc.cpp
index 932c218d2..53428988f 100644
--- a/extensions/grafana-loki/PushGrafanaLokiGrpc.cpp
+++ b/extensions/grafana-loki/PushGrafanaLokiGrpc.cpp
@@ -109,7 +109,7 @@ void PushGrafanaLokiGrpc::onSchedule(core::ProcessContext& context, core::Proces
setUpGrpcChannel(url, context);
}
-nonstd::expected<void, std::string> PushGrafanaLokiGrpc::submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) {
+std::expected<void, std::string> PushGrafanaLokiGrpc::submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) {
logproto::PushRequest current_batch;
logproto::StreamAdapter *stream = current_batch.add_streams();
stream->set_labels(stream_labels_);
@@ -135,7 +135,7 @@ nonstd::expected<void, std::string> PushGrafanaLokiGrpc::submitRequest(const std
}
if (!push_channel_->WaitForConnected(std::chrono::system_clock::now() + connection_timeout_ms_)) {
- return nonstd::make_unexpected("Timeout waiting for connection to Grafana Loki gRPC server. Please check if the server is running and reachable and the Url value is correct.");
+ return std::unexpected{"Timeout waiting for connection to Grafana Loki gRPC server. Please check if the server is running and reachable and the Url value is correct."};
}
logproto::PushResponse response;
@@ -148,7 +148,7 @@ nonstd::expected<void, std::string> PushGrafanaLokiGrpc::submitRequest(const std
if (status.ok()) {
return {};
} else {
- return nonstd::make_unexpected(status.error_message());
+ return std::unexpected{status.error_message()};
}
}
diff --git a/extensions/grafana-loki/PushGrafanaLokiGrpc.h b/extensions/grafana-loki/PushGrafanaLokiGrpc.h
index 9d9726648..8ba3e0db9 100644
--- a/extensions/grafana-loki/PushGrafanaLokiGrpc.h
+++ b/extensions/grafana-loki/PushGrafanaLokiGrpc.h
@@ -58,7 +58,7 @@ class PushGrafanaLokiGrpc final : public PushGrafanaLoki {
protected:
void setUpStreamLabels(core::ProcessContext& context) override;
- nonstd::expected<void, std::string> submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) override;
+ std::expected<void, std::string> submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) override;
void setUpGrpcChannel(const std::string& url, core::ProcessContext& context);
std::string stream_labels_;
diff --git a/extensions/grafana-loki/PushGrafanaLokiREST.cpp b/extensions/grafana-loki/PushGrafanaLokiREST.cpp
index 8b421dbb7..fd01e15d4 100644
--- a/extensions/grafana-loki/PushGrafanaLokiREST.cpp
+++ b/extensions/grafana-loki/PushGrafanaLokiREST.cpp
@@ -158,15 +158,15 @@ std::string PushGrafanaLokiREST::createLokiJson(const std::vector<std::shared_pt
return buffer.GetString();
}
-nonstd::expected<void, std::string> PushGrafanaLokiREST::submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) {
+std::expected<void, std::string> PushGrafanaLokiREST::submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) {
auto loki_json = createLokiJson(batched_flow_files, session);
client_.setPostFields(loki_json);
if (!client_.submit()) {
- return nonstd::make_unexpected("Submit failed");
+ return std::unexpected{"Submit failed"};
}
auto response_code = client_.getResponseCode();
if (response_code < 200 || response_code >= 300) {
- return nonstd::make_unexpected("Error occurred: " + std::to_string(response_code));
+ return std::unexpected{"Error occurred: " + std::to_string(response_code)};
}
return {};
}
diff --git a/extensions/grafana-loki/PushGrafanaLokiREST.h b/extensions/grafana-loki/PushGrafanaLokiREST.h
index 93448b09c..62bac0ea5 100644
--- a/extensions/grafana-loki/PushGrafanaLokiREST.h
+++ b/extensions/grafana-loki/PushGrafanaLokiREST.h
@@ -59,7 +59,7 @@ class PushGrafanaLokiREST : public PushGrafanaLoki {
protected:
std::string createLokiJson(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) const;
- nonstd::expected<void, std::string> submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) override;
+ std::expected<void, std::string> submitRequest(const std::vector<std::shared_ptr<core::FlowFile>>& batched_flow_files, core::ProcessSession& session) override;
void initializeHttpClient(core::ProcessContext& context);
void setUpStreamLabels(core::ProcessContext& context) override;
void setupClientTimeouts(const core::ProcessContext& context);
diff --git a/extensions/kubernetes/MetricsApi.cpp b/extensions/kubernetes/MetricsApi.cpp
index f392079c9..fbcfb7a9c 100644
--- a/extensions/kubernetes/MetricsApi.cpp
+++ b/extensions/kubernetes/MetricsApi.cpp
@@ -32,13 +32,13 @@ using genericClient_unique_ptr = std::unique_ptr<genericClient_t, genericClient_
namespace org::apache::nifi::minifi::kubernetes::metrics {
-nonstd::expected<std::string, std::string> podMetricsList(const kubernetes::ApiClient& api_client) {
+std::expected<std::string, std::string> podMetricsList(const kubernetes::ApiClient& api_client) {
genericClient_unique_ptr genericClient{genericClient_create(api_client.getClient(), "metrics.k8s.io", "v1beta1", "pods")};
utils::freeing_unique_ptr<char> api_response{Generic_list(genericClient.get())};
if (api_response) {
return std::string{api_response.get()};
} else {
- return nonstd::make_unexpected("Could not access the Kubernetes API /apis/metrics.k8s.io/v1beta1/pods");
+ return std::unexpected{"Could not access the Kubernetes API /apis/metrics.k8s.io/v1beta1/pods"};
}
}
diff --git a/extensions/kubernetes/MetricsApi.h b/extensions/kubernetes/MetricsApi.h
index bcbfad65a..f0ff656d1 100644
--- a/extensions/kubernetes/MetricsApi.h
+++ b/extensions/kubernetes/MetricsApi.h
@@ -24,6 +24,6 @@
namespace org::apache::nifi::minifi::kubernetes::metrics {
-nonstd::expected<std::string, std::string> podMetricsList(const kubernetes::ApiClient& api_client);
+std::expected<std::string, std::string> podMetricsList(const kubernetes::ApiClient& api_client);
} // namespace org::apache::nifi::minifi::kubernetes::metrics
diff --git a/extensions/kubernetes/MetricsFilter.cpp b/extensions/kubernetes/MetricsFilter.cpp
index 5538582cb..98a5ff62b 100644
--- a/extensions/kubernetes/MetricsFilter.cpp
+++ b/extensions/kubernetes/MetricsFilter.cpp
@@ -24,16 +24,16 @@
namespace org::apache::nifi::minifi::kubernetes::metrics {
-nonstd::expected<std::string, std::string> filter(const std::string& metrics_json, const std::function<bool(const kubernetes::ContainerInfo&)>& filter_function) {
+std::expected<std::string, std::string> filter(const std::string& metrics_json, const std::function<bool(const kubernetes::ContainerInfo&)>& filter_function) {
rapidjson::Document document;
rapidjson::ParseResult parse_result = document.Parse<rapidjson::kParseStopWhenDoneFlag>(metrics_json.data());
if (parse_result.IsError()) {
- return nonstd::make_unexpected(utils::string::join_pack("Error parsing the metrics received from the Kubernetes API at offset ",
- std::to_string(parse_result.Offset()), ": ", rapidjson::GetParseError_En(parse_result.Code())));
+ return std::unexpected{utils::string::join_pack("Error parsing the metrics received from the Kubernetes API at offset ",
+ std::to_string(parse_result.Offset()), ": ", rapidjson::GetParseError_En(parse_result.Code()))};
}
if (!document.HasMember("items") || !document["items"].IsArray()) {
- return nonstd::make_unexpected("Unexpected JSON received from the Kubernetes API: missing list of 'items'");
+ return std::unexpected{"Unexpected JSON received from the Kubernetes API: missing list of 'items'"};
}
rapidjson::Value& pods = document["items"];
diff --git a/extensions/kubernetes/MetricsFilter.h b/extensions/kubernetes/MetricsFilter.h
index 3ed60131a..709f0e4f3 100644
--- a/extensions/kubernetes/MetricsFilter.h
+++ b/extensions/kubernetes/MetricsFilter.h
@@ -24,7 +24,7 @@
namespace org::apache::nifi::minifi::kubernetes::metrics {
-[[nodiscard]] nonstd::expected<std::string, std::string> filter(
+[[nodiscard]] std::expected<std::string, std::string> filter(
const std::string& metrics_json,
const std::function<bool(const kubernetes::ContainerInfo&)>& filter_function);
diff --git a/extensions/llamacpp/processors/DefaultLlamaContext.cpp b/extensions/llamacpp/processors/DefaultLlamaContext.cpp
index cc8fb017d..23559fb7c 100644
--- a/extensions/llamacpp/processors/DefaultLlamaContext.cpp
+++ b/extensions/llamacpp/processors/DefaultLlamaContext.cpp
@@ -108,7 +108,7 @@ std::optional<std::string> DefaultLlamaContext::applyTemplate(const std::vector<
return text;
}
-nonstd::expected<GenerationResult, std::string> DefaultLlamaContext::generate(const std::string& input, std::function<void(std::string_view/*token*/)> token_handler) {
+std::expected<GenerationResult, std::string> DefaultLlamaContext::generate(const std::string& input, std::function<void(std::string_view/*token*/)> token_handler) {
GenerationResult result{};
auto start_time = std::chrono::steady_clock::now();
const llama_vocab * vocab = llama_model_get_vocab(llama_model_);
@@ -121,9 +121,9 @@ nonstd::expected<GenerationResult, std::string> DefaultLlamaContext::generate(co
while (true) {
int32_t res = llama_decode(llama_ctx_, batch);
if (res == 1) {
- return nonstd::make_unexpected("Could not find a KV slot for the batch (try reducing the size of the batch or increase the context)");
+ return std::unexpected{"Could not find a KV slot for the batch (try reducing the size of the batch or increase the context)"};
} else if (res < 0) {
- return nonstd::make_unexpected("Error occurred while executing llama decode");
+ return std::unexpected{"Error occurred while executing llama decode"};
}
new_token_id = llama_sampler_sample(llama_sampler_, llama_ctx_, -1);
@@ -142,7 +142,7 @@ nonstd::expected<GenerationResult, std::string> DefaultLlamaContext::generate(co
std::array<char, 128> buf{};
int32_t len = llama_token_to_piece(vocab, new_token_id, buf.data(), gsl::narrow<int32_t>(buf.size()), 0, true);
if (len < 0) {
- return nonstd::make_unexpected("Failed to convert token to text");
+ return std::unexpected{"Failed to convert token to text"};
}
gsl_Assert(len < 128);
diff --git a/extensions/llamacpp/processors/DefaultLlamaContext.h b/extensions/llamacpp/processors/DefaultLlamaContext.h
index 2d2bdf562..94c3346b2 100644
--- a/extensions/llamacpp/processors/DefaultLlamaContext.h
+++ b/extensions/llamacpp/processors/DefaultLlamaContext.h
@@ -32,7 +32,7 @@ class DefaultLlamaContext : public LlamaContext {
~DefaultLlamaContext() override;
std::optional<std::string> applyTemplate(const std::vector<LlamaChatMessage>& messages) override;
- nonstd::expected<GenerationResult, std::string> generate(const std::string& input, std::function<void(std::string_view/*token*/)> token_handler) override;
+ std::expected<GenerationResult, std::string> generate(const std::string& input, std::function<void(std::string_view/*token*/)> token_handler) override;
private:
const LlamaBackendInitializer& llama_context_initializer_ = LlamaBackendInitializer::get();
diff --git a/extensions/llamacpp/processors/LlamaContext.h b/extensions/llamacpp/processors/LlamaContext.h
index 3c107c2c5..a7cd2eb44 100644
--- a/extensions/llamacpp/processors/LlamaContext.h
+++ b/extensions/llamacpp/processors/LlamaContext.h
@@ -59,7 +59,7 @@ struct GenerationResult {
class LlamaContext {
public:
virtual std::optional<std::string> applyTemplate(const std::vector<LlamaChatMessage>& messages) = 0;
- virtual nonstd::expected<GenerationResult, std::string> generate(const std::string& input, std::function<void(std::string_view/*token*/)> token_handler) = 0;
+ virtual std::expected<GenerationResult, std::string> generate(const std::string& input, std::function<void(std::string_view/*token*/)> token_handler) = 0;
virtual ~LlamaContext() = default;
};
diff --git a/extensions/llamacpp/tests/RunLlamaCppInferenceTests.cpp b/extensions/llamacpp/tests/RunLlamaCppInferenceTests.cpp
index 13754f1f5..9fa893fba 100644
--- a/extensions/llamacpp/tests/RunLlamaCppInferenceTests.cpp
+++ b/extensions/llamacpp/tests/RunLlamaCppInferenceTests.cpp
@@ -37,9 +37,9 @@ class MockLlamaContext : public processors::LlamaContext {
return "Test input";
}
- nonstd::expected<processors::GenerationResult, std::string> generate(const std::string& input, std::function<void(std::string_view/*token*/)> token_handler) override {
+ std::expected<processors::GenerationResult, std::string> generate(const std::string& input, std::function<void(std::string_view/*token*/)> token_handler) override {
if (fail_generation_) {
- return nonstd::make_unexpected("Generation failed");
+ return std::unexpected{"Generation failed"};
}
processors::GenerationResult result;
input_ = input;
diff --git a/extensions/mqtt/processors/PublishMQTT.cpp b/extensions/mqtt/processors/PublishMQTT.cpp
index 24bc72e90..576bf98e6 100644
--- a/extensions/mqtt/processors/PublishMQTT.cpp
+++ b/extensions/mqtt/processors/PublishMQTT.cpp
@@ -65,7 +65,7 @@ void PublishMQTT::onTriggerImpl(core::ProcessContext& context, core::ProcessSess
std::vector<std::shared_ptr<core::FlowFile>> flow_files;
if (record_converter_) {
- nonstd::expected<core::RecordSet, std::error_code> record_set;
+ std::expected<core::RecordSet, std::error_code> record_set;
session.read(original_flow_file, [this, &record_set](const std::shared_ptr<io::InputStream>& input_stream) -> io::IoResult {
record_set = record_converter_->record_set_reader->read(*input_stream);
return io::IoResult::from(input_stream->size());
diff --git a/extensions/opc/include/putopc.h b/extensions/opc/include/putopc.h
index d98ac23b9..5aba702b8 100644
--- a/extensions/opc/include/putopc.h
+++ b/extensions/opc/include/putopc.h
@@ -118,7 +118,7 @@ class PutOPCProcessor final : public BaseOPCProcessor {
private:
bool readParentNodeId();
- nonstd::expected<std::pair<bool, UA_NodeId>, std::string> configureTargetNode(core::ProcessContext& context, core::FlowFile& flow_file) const;
+ std::expected<std::pair<bool, UA_NodeId>, std::string> configureTargetNode(core::ProcessContext& context, core::FlowFile& flow_file) const;
void updateNode(const UA_NodeId& target_node, const std::string& contentstr, core::ProcessSession& session, const std::shared_ptr<core::FlowFile>& flow_file) const;
void createNode(const UA_NodeId& target_node, const std::string& contentstr, core::ProcessContext& context, core::ProcessSession& session, const std::shared_ptr<core::FlowFile>& flow_file) const;
diff --git a/extensions/opc/src/putopc.cpp b/extensions/opc/src/putopc.cpp
index 1d6247571..e253d6765 100644
--- a/extensions/opc/src/putopc.cpp
+++ b/extensions/opc/src/putopc.cpp
@@ -88,29 +88,29 @@ bool PutOPCProcessor::readParentNodeId() {
return true;
}
-nonstd::expected<std::pair<bool, UA_NodeId>, std::string> PutOPCProcessor::configureTargetNode(core::ProcessContext& context, core::FlowFile& flow_file) const {
+std::expected<std::pair<bool, UA_NodeId>, std::string> PutOPCProcessor::configureTargetNode(core::ProcessContext& context, core::FlowFile& flow_file) const {
const auto namespaceidx = context.getProperty(TargetNodeNameSpaceIndex, &flow_file).value_or("");
if (namespaceidx.empty()) {
- return nonstd::make_unexpected(fmt::format("Flowfile {} had no target namespace index specified, routing to failure!", flow_file.getUUIDStr()));
+ return std::unexpected{fmt::format("Flowfile {} had no target namespace index specified, routing to failure!", flow_file.getUUIDStr())};
}
int32_t nsi = 0;
try {
nsi = std::stoi(namespaceidx);
} catch (const std::exception&) {
- return nonstd::make_unexpected(fmt::format("Flowfile {} has invalid namespace index ({}), routing to failure!",
- flow_file.getUUIDStr(), namespaceidx));
+ return std::unexpected{fmt::format("Flowfile {} has invalid namespace index ({}), routing to failure!",
+ flow_file.getUUIDStr(), namespaceidx)};
}
const auto target_id_type = context.getProperty(TargetNodeIDType, &flow_file).value_or("");
if (target_id_type.empty()) {
- return nonstd::make_unexpected(fmt::format("Flowfile {} has invalid target node id type, routing to failure!",
- flow_file.getUUIDStr()));
+ return std::unexpected{fmt::format("Flowfile {} has invalid target node id type, routing to failure!",
+ flow_file.getUUIDStr())};
}
const auto target_id = context.getProperty(TargetNodeID, &flow_file).value_or("");
if (target_id.empty()) {
- return nonstd::make_unexpected(fmt::format("Flowfile {} had target node ID type specified ({}) without ID, routing to failure!",
- flow_file.getUUIDStr(), target_id_type));
+ return std::unexpected{fmt::format("Flowfile {} had target node ID type specified ({}) without ID, routing to failure!",
+ flow_file.getUUIDStr(), target_id_type)};
}
UA_NodeId target_node;
@@ -120,15 +120,15 @@ nonstd::expected<std::pair<bool, UA_NodeId>, std::string> PutOPCProcessor::confi
try {
target_node.identifier.numeric = std::stoi(target_id); // NOLINT(cppcoreguidelines-pro-type-union-access)
} catch (const std::exception&) {
- return nonstd::make_unexpected(fmt::format("Flowfile {}: target node ID is not a valid integer: {}. Routing to failure!",
- flow_file.getUUIDStr(), target_id));
+ return std::unexpected{fmt::format("Flowfile {}: target node ID is not a valid integer: {}. Routing to failure!",
+ flow_file.getUUIDStr(), target_id)};
}
} else if (target_id_type == "String") {
target_node.identifierType = UA_NODEIDTYPE_STRING;
target_node.identifier.string = UA_STRING_ALLOC(target_id.c_str()); // NOLINT(cppcoreguidelines-pro-type-union-access)
} else {
- return nonstd::make_unexpected(fmt::format("Flowfile {}: target node ID type is invalid: {}. Routing to failure!",
- flow_file.getUUIDStr(), target_id_type));
+ return std::unexpected{fmt::format("Flowfile {}: target node ID type is invalid: {}. Routing to failure!",
+ flow_file.getUUIDStr(), target_id_type)};
}
return std::make_pair(connection_->exists(target_node), target_node);
}
diff --git a/extensions/python/types/PyRecordSetReader.cpp b/extensions/python/types/PyRecordSetReader.cpp
index 815d2d642..2e9a25aaa 100644
--- a/extensions/python/types/PyRecordSetReader.cpp
+++ b/extensions/python/types/PyRecordSetReader.cpp
@@ -86,7 +86,7 @@ PyObject* PyRecordSetReader::read(PyRecordSetReader* self, PyObject* args) {
return nullptr;
}
- nonstd::expected<core::RecordSet, std::error_code> read_result;
+ std::expected<core::RecordSet, std::error_code> read_result;
process_session->getSession().read(flow_file, [&record_set_reader, &read_result](const std::shared_ptr<io::InputStream>& input_stream) {
read_result = record_set_reader->read(*input_stream);
return io::IoResult::from(input_stream->size());
diff --git a/extensions/rocksdb-repos/FlowFileLoader.cpp b/extensions/rocksdb-repos/FlowFileLoader.cpp
index 07b413739..c43438071 100644
--- a/extensions/rocksdb-repos/FlowFileLoader.cpp
+++ b/extensions/rocksdb-repos/FlowFileLoader.cpp
@@ -50,7 +50,7 @@ std::future<FlowFileLoader::FlowFilePtrVec> FlowFileLoader::load(std::vector<Swa
// the dummy_future is for the return value of the Worker's lambda, rerunning this lambda
// depends on run_determinant + result
// we could create a custom run_determinant to instead determine if/when it should be rerun
- // based on the lambda's return value (e.g. it could return a nonstd::expected<FlowFilePtrVec, TaskRescheduleInfo>)
+ // based on the lambda's return value (e.g. it could return a std::expected<FlowFilePtrVec, TaskRescheduleInfo>)
// but then the std::future would also bear this type
std::future<utils::TaskRescheduleInfo> dummy_future;
thread_pool_.execute(std::move(task), dummy_future);
diff --git a/extensions/smb/SmbConnectionControllerService.cpp b/extensions/smb/SmbConnectionControllerService.cpp
index 3a9c930a5..a2b212912 100644
--- a/extensions/smb/SmbConnectionControllerService.cpp
+++ b/extensions/smb/SmbConnectionControllerService.cpp
@@ -59,7 +59,7 @@ void SmbConnectionControllerService::notifyStop() {
logger_->log_error("Error while disconnecting from SMB: {}", disconnection_result.error().message());
}
-nonstd::expected<void, std::error_code> SmbConnectionControllerService::connect() {
+std::expected<void, std::error_code> SmbConnectionControllerService::connect() {
auto connection_result = WNetAddConnection2A(&net_resource_,
credentials_ ? credentials_->password.c_str() : nullptr,
credentials_ ? credentials_->username.c_str() : nullptr,
@@ -67,15 +67,15 @@ nonstd::expected<void, std::error_code> SmbConnectionControllerService::connect(
if (connection_result == NO_ERROR)
return {};
- return nonstd::make_unexpected(utils::OsUtils::windowsErrorToErrorCode(connection_result));
+ return std::unexpected{utils::OsUtils::windowsErrorToErrorCode(connection_result)};
}
-nonstd::expected<void, std::error_code> SmbConnectionControllerService::disconnect() {
+std::expected<void, std::error_code> SmbConnectionControllerService::disconnect() {
auto disconnection_result = WNetCancelConnection2A(server_path_.c_str(), 0, true);
if (disconnection_result == NO_ERROR)
return {};
- return nonstd::make_unexpected(utils::OsUtils::windowsErrorToErrorCode(disconnection_result));
+ return std::unexpected{utils::OsUtils::windowsErrorToErrorCode(disconnection_result)};
}
bool SmbConnectionControllerService::isConnected() {
diff --git a/extensions/smb/SmbConnectionControllerService.h b/extensions/smb/SmbConnectionControllerService.h
index 22894badc..f84728974 100644
--- a/extensions/smb/SmbConnectionControllerService.h
+++ b/extensions/smb/SmbConnectionControllerService.h
@@ -84,8 +84,8 @@ class SmbConnectionControllerService : public core::controller::ControllerServic
virtual std::filesystem::path getPath() const { return server_path_; }
private:
- nonstd::expected<void, std::error_code> connect();
- nonstd::expected<void, std::error_code> disconnect();
+ std::expected<void, std::error_code> connect();
+ std::expected<void, std::error_code> disconnect();
bool isConnected();
struct Credentials {
diff --git a/extensions/smb/tests/utils/MockSmbConnectionControllerService.h b/extensions/smb/tests/utils/MockSmbConnectionControllerService.h
index bc158df48..8698fa3b1 100644
--- a/extensions/smb/tests/utils/MockSmbConnectionControllerService.h
+++ b/extensions/smb/tests/utils/MockSmbConnectionControllerService.h
@@ -73,7 +73,7 @@ class MockSmbConnectionControllerService : public SmbConnectionControllerService
void setPath(std::filesystem::path path) { server_path_ = std::move(path);}
- nonstd::expected<ListSmbExpectedAttributes, std::error_code> addFile(const std::filesystem::path& relative_path,
+ std::expected<ListSmbExpectedAttributes, std::error_code> addFile(const std::filesystem::path& relative_path,
std::string_view content,
std::chrono::file_clock::duration age) {
auto full_path = getPath() / relative_path;
@@ -81,13 +81,13 @@ class MockSmbConnectionControllerService : public SmbConnectionControllerService
{
std::ofstream out_file(full_path, std::ios::binary | std::ios::out);
if (!out_file.is_open())
- return nonstd::make_unexpected(std::make_error_code(std::errc::bad_file_descriptor));
+ return std::unexpected{std::make_error_code(std::errc::bad_file_descriptor)};
out_file << content;
}
auto current_time = std::chrono::system_clock::now();
auto last_write_time_error = utils::file::set_last_write_time(full_path, minifi::utils::file::from_sys(current_time) - age);
if (!last_write_time_error)
- return nonstd::make_unexpected(std::make_error_code(std::errc::bad_file_descriptor));
+ return std::unexpected{std::make_error_code(std::errc::bad_file_descriptor)};
auto path = relative_path.parent_path().empty() ? (std::filesystem::path(".") / "").string() : (relative_path.parent_path() / "").string();
return ListSmbExpectedAttributes{
.expected_filename = relative_path.filename().string(),
diff --git a/extensions/smb/tests/utils/TempSmbShare.h b/extensions/smb/tests/utils/TempSmbShare.h
index 170261a6e..e43690f0f 100644
--- a/extensions/smb/tests/utils/TempSmbShare.h
+++ b/extensions/smb/tests/utils/TempSmbShare.h
@@ -40,7 +40,7 @@ class TempSmbShare {
NetShareDel(nullptr, net_name_.data(), 0);
}
- static nonstd::expected<TempSmbShare, std::error_code> create(std::wstring net_name, std::wstring path) {
+ static std::expected<TempSmbShare, std::error_code> create(std::wstring net_name, std::wstring path) {
std::wstring remark = L"SMB share to test SMB capabilities of minifi";
SHARE_INFO_502 share_info = {
.shi502_netname = net_name.data(),
@@ -59,7 +59,7 @@ class TempSmbShare {
if (netshare_result == NERR_Success) {
return TempSmbShare(std::move(net_name), std::move(path));
}
- return nonstd::make_unexpected(utils::OsUtils::windowsErrorToErrorCode(netshare_result));
+ return std::unexpected{utils::OsUtils::windowsErrorToErrorCode(netshare_result)};
}
std::filesystem::path getPath() const {
diff --git a/extensions/sql/CMakeLists.txt b/extensions/sql/CMakeLists.txt
index b6801df7d..849426f12 100644
--- a/extensions/sql/CMakeLists.txt
+++ b/extensions/sql/CMakeLists.txt
@@ -53,7 +53,7 @@ else()
CMAKE_COMMAND ""
UPDATE_COMMAND ""
INSTALL_COMMAND make install
- CONFIGURE_COMMAND ./autogen.sh && ./configure --prefix=${IODBC_BYPRODUCT_DIR} --with-pic
+ CONFIGURE_COMMAND bash "-c" "./autogen.sh && ./configure --prefix=${IODBC_BYPRODUCT_DIR} --with-pic CFLAGS='${CMAKE_C_FLAGS} -std=gnu17'"
STEP_TARGETS build
BUILD_BYPRODUCTS "${IODBC_BYPRODUCT_DIR}/${IODBC_BYPRODUCT}"
EXCLUDE_FROM_ALL TRUE
diff --git a/extensions/standard-processors/CMakeLists.txt b/extensions/standard-processors/CMakeLists.txt
index 100bae576..bd16be04f 100644
--- a/extensions/standard-processors/CMakeLists.txt
+++ b/extensions/standard-processors/CMakeLists.txt
@@ -30,8 +30,6 @@ include(Asio)
include(Jsoncons)
target_link_libraries(minifi-standard-processors ${LIBMINIFI} Threads::Threads range-v3 asio pugixml jsoncons)
-include(Coroutines)
-enable_coroutines()
register_extension(minifi-standard-processors "STANDARD PROCESSORS" STANDARD-PROCESSORS "Provides standard processors" "extensions/standard-processors/tests/")
diff --git a/extensions/standard-processors/controllers/JsonTreeReader.cpp b/extensions/standard-processors/controllers/JsonTreeReader.cpp
index c7bd1d5d6..662f31dc1 100644
--- a/extensions/standard-processors/controllers/JsonTreeReader.cpp
+++ b/extensions/standard-processors/controllers/JsonTreeReader.cpp
@@ -29,7 +29,7 @@ namespace org::apache::nifi::minifi::standard {
namespace {
-nonstd::expected<core::RecordField, std::error_code> parse(const rapidjson::Value& json_value) {
+std::expected<core::RecordField, std::error_code> parse(const rapidjson::Value& json_value) {
if (json_value.IsDouble()) {
return core::RecordField{json_value.GetDouble()};
}
@@ -47,7 +47,7 @@ nonstd::expected<core::RecordField, std::error_code> parse(const rapidjson::Valu
for (const auto& element : json_value.GetArray()) {
auto element_field = parse(element);
if (!element_field)
- return nonstd::make_unexpected(element_field.error());
+ return std::unexpected{element_field.error()};
record_array.push_back(std::move(*element_field));
}
return core::RecordField{std::move(record_array)};
@@ -58,33 +58,33 @@ nonstd::expected<core::RecordField, std::error_code> parse(const rapidjson::Valu
auto element_key = m.name.GetString();
auto element_field = parse(m.value);
if (!element_field)
- return nonstd::make_unexpected(element_field.error());
+ return std::unexpected{element_field.error()};
record_object.emplace(element_key, std::move(*element_field));
}
- // Workaround for GCC 12 false positive -Wfree-nonheap-object https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99098
-#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ <= 12)
+ // Workaround for GCC false positive -Wfree-nonheap-object https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99098
+#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
#endif
return core::RecordField{std::move(record_object)};
-#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ <= 12)
+#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic pop
#endif
}
- return nonstd::make_unexpected(std::make_error_code(std::errc::invalid_argument));
+ return std::unexpected{std::make_error_code(std::errc::invalid_argument)};
}
-nonstd::expected<core::Record, std::error_code> parseRecord(rapidjson::Value& record_json) {
+std::expected<core::Record, std::error_code> parseRecord(rapidjson::Value& record_json) {
core::Record result;
if (!record_json.IsObject()) {
- return nonstd::make_unexpected(std::make_error_code(std::errc::invalid_argument));
+ return std::unexpected{std::make_error_code(std::errc::invalid_argument)};
}
for (const auto& member : record_json.GetObject()) {
const auto element_key = member.name.GetString();
auto element_field = parse(member.value);
if (!element_field)
- return nonstd::make_unexpected(element_field.error());
+ return std::unexpected{element_field.error()};
result.emplace(element_key, std::move(*element_field));
}
return result;
@@ -121,7 +121,7 @@ bool readAsArray(const std::string& content, core::RecordSet& record_set) {
return true;
}
-nonstd::expected<core::RecordSet, std::error_code> JsonTreeReader::read(io::InputStream& input_stream) {
+std::expected<core::RecordSet, std::error_code> JsonTreeReader::read(io::InputStream& input_stream) {
core::RecordSet record_set{};
const auto read_result = [&record_set](io::InputStream& input_stream) -> size_t {
std::string content;
@@ -138,7 +138,7 @@ nonstd::expected<core::RecordSet, std::error_code> JsonTreeReader::read(io::Inpu
return read_ret;
}(input_stream);
if (io::isError(read_result))
- return nonstd::make_unexpected(std::make_error_code(std::errc::invalid_argument));
+ return std::unexpected{std::make_error_code(std::errc::invalid_argument)};
return record_set;
}
diff --git a/extensions/standard-processors/controllers/JsonTreeReader.h b/extensions/standard-processors/controllers/JsonTreeReader.h
index 28b41c688..91addd91c 100644
--- a/extensions/standard-processors/controllers/JsonTreeReader.h
+++ b/extensions/standard-processors/controllers/JsonTreeReader.h
@@ -44,7 +44,7 @@ class JsonTreeReader final : public core::RecordSetReaderImpl {
EXTENSIONAPI static constexpr auto ImplementsApis = std::array{ RecordSetReader::ProvidesApi };
ADD_COMMON_VIRTUAL_FUNCTIONS_FOR_CONTROLLER_SERVICES
- nonstd::expected<core::RecordSet, std::error_code> read(io::InputStream& input_stream) override;
+ std::expected<core::RecordSet, std::error_code> read(io::InputStream& input_stream) override;
void initialize() override {
setSupportedProperties(Properties);
diff --git a/extensions/standard-processors/controllers/XMLReader.cpp b/extensions/standard-processors/controllers/XMLReader.cpp
index 88cebe7ba..980ccc721 100644
--- a/extensions/standard-processors/controllers/XMLReader.cpp
+++ b/extensions/standard-processors/controllers/XMLReader.cpp
@@ -182,7 +182,7 @@ void XMLReader::onEnable() {
expect_records_as_array_ = parseBoolProperty(ExpectRecordsAsArray.name);
}
-nonstd::expected<core::RecordSet, std::error_code> XMLReader::read(io::InputStream& input_stream) {
+std::expected<core::RecordSet, std::error_code> XMLReader::read(io::InputStream& input_stream) {
core::RecordSet record_set{};
const auto read_result = [this, &record_set](io::InputStream& input_stream) -> size_t {
std::string content;
@@ -198,7 +198,7 @@ nonstd::expected<core::RecordSet, std::error_code> XMLReader::read(io::InputStre
return read_ret;
}(input_stream);
if (io::isError(read_result)) {
- return nonstd::make_unexpected(std::make_error_code(std::errc::invalid_argument));
+ return std::unexpected{std::make_error_code(std::errc::invalid_argument)};
}
return record_set;
}
diff --git a/extensions/standard-processors/controllers/XMLReader.h b/extensions/standard-processors/controllers/XMLReader.h
index 7ad5f3301..1222b7576 100644
--- a/extensions/standard-processors/controllers/XMLReader.h
+++ b/extensions/standard-processors/controllers/XMLReader.h
@@ -69,7 +69,7 @@ class XMLReader final : public core::RecordSetReaderImpl {
EXTENSIONAPI static constexpr auto ImplementsApis = std::array{ RecordSetReader::ProvidesApi };
ADD_COMMON_VIRTUAL_FUNCTIONS_FOR_CONTROLLER_SERVICES
- nonstd::expected<core::RecordSet, std::error_code> read(io::InputStream& input_stream) override;
+ std::expected<core::RecordSet, std::error_code> read(io::InputStream& input_stream) override;
void initialize() override {
setSupportedProperties(Properties);
diff --git a/extensions/standard-processors/modbus/FetchModbusTcp.cpp b/extensions/standard-processors/modbus/FetchModbusTcp.cpp
index 1969d7ea0..ad988de9a 100644
--- a/extensions/standard-processors/modbus/FetchModbusTcp.cpp
+++ b/extensions/standard-processors/modbus/FetchModbusTcp.cpp
@@ -168,16 +168,16 @@ void FetchModbusTcp::processFlowFile(const std::shared_ptr<utils::net::Connectio
}
}
-nonstd::expected<core::Record, std::error_code> FetchModbusTcp::readModbus(
+std::expected<core::Record, std::error_code> FetchModbusTcp::readModbus(
const std::shared_ptr<utils::net::ConnectionHandlerBase>& connection_handler,
const std::unordered_map<std::string, std::unique_ptr<ReadModbusFunction>>& address_map) {
- nonstd::expected<core::Record, std::error_code> result;
+ std::expected<core::Record, std::error_code> result;
io_context_.restart();
asio::co_spawn(io_context_,
sendRequestsAndReadResponses(*connection_handler, address_map),
[&result](const std::exception_ptr& exception_ptr, auto res) {
if (exception_ptr) {
- result = nonstd::make_unexpected(ModbusExceptionCode::InvalidResponse);
+ result = std::unexpected{ModbusExceptionCode::InvalidResponse};
} else {
result = std::move(res);
}
@@ -187,13 +187,13 @@ nonstd::expected<core::Record, std::error_code> FetchModbusTcp::readModbus(
}
auto FetchModbusTcp::sendRequestsAndReadResponses(utils::net::ConnectionHandlerBase& connection_handler,
- const std::unordered_map<std::string, std::unique_ptr<ReadModbusFunction>>& address_map) -> asio::awaitable<nonstd::expected<core::Record, std::error_code>> {
+ const std::unordered_map<std::string, std::unique_ptr<ReadModbusFunction>>& address_map) -> asio::awaitable<std::expected<core::Record, std::error_code>> {
core::Record result;
for (const auto& [variable, read_modbus_fn] : address_map) {
gsl_Expects(read_modbus_fn);
auto response = co_await sendRequestAndReadResponse(connection_handler, *read_modbus_fn);
if (!response) {
- co_return nonstd::make_unexpected(response.error());
+ co_return std::unexpected{response.error()};
}
result.emplace(variable, std::move(*response));
}
@@ -202,19 +202,19 @@ auto FetchModbusTcp::sendRequestsAndReadResponses(utils::net::ConnectionHandlerB
auto FetchModbusTcp::sendRequestAndReadResponse(utils::net::ConnectionHandlerBase& connection_handler,
- const ReadModbusFunction& read_modbus_function) -> asio::awaitable<nonstd::expected<core::RecordField, std::error_code>> {
+ const ReadModbusFunction& read_modbus_function) -> asio::awaitable<std::expected<core::RecordField, std::error_code>> {
if (auto connection_error = co_await connection_handler.setupUsableSocket(io_context_)) { // NOLINT (clang tidy doesnt like coroutines)
- co_return nonstd::make_unexpected(connection_error);
+ co_return std::unexpected{connection_error};
}
if (auto [write_error, bytes_written] = co_await connection_handler.write(asio::buffer(read_modbus_function.requestBytes())); write_error) {
- co_return nonstd::make_unexpected(write_error);
+ co_return std::unexpected{write_error};
}
std::array<std::byte, 7> apu_buffer{};
asio::mutable_buffer response_apu(apu_buffer.data(), 7);
if (auto [read_error, bytes_read] = co_await connection_handler.read(response_apu); read_error) {
- co_return nonstd::make_unexpected(read_error);
+ co_return std::unexpected{read_error};
}
const auto received_transaction_id = fromBytes<uint16_t>({apu_buffer[0], apu_buffer[1]});
@@ -223,23 +223,23 @@ auto FetchModbusTcp::sendRequestAndReadResponse(utils::net::ConnectionHandlerBas
const auto unit_id = static_cast<uint8_t>(apu_buffer[6]);
if (received_transaction_id != read_modbus_function.getTransactionId()) {
- co_return nonstd::make_unexpected(ModbusExceptionCode::InvalidTransactionId);
+ co_return std::unexpected{ModbusExceptionCode::InvalidTransactionId};
}
if (received_protocol != 0) {
- co_return nonstd::make_unexpected(ModbusExceptionCode::IllegalProtocol);
+ co_return std::unexpected{ModbusExceptionCode::IllegalProtocol};
}
if (unit_id != read_modbus_function.getUnitId()) {
- co_return nonstd::make_unexpected(ModbusExceptionCode::InvalidSlaveId);
+ co_return std::unexpected{ModbusExceptionCode::InvalidSlaveId};
}
if (received_length + 6 > 260 || received_length <= 1) {
- co_return nonstd::make_unexpected(ModbusExceptionCode::InvalidResponse);
+ co_return std::unexpected{ModbusExceptionCode::InvalidResponse};
}
std::array<std::byte, 260-7> pdu_buffer{};
asio::mutable_buffer response_pdu(pdu_buffer.data(), received_length-1);
auto [read_error, bytes_read] = co_await connection_handler.read(response_pdu);
if (read_error) {
- co_return nonstd::make_unexpected(read_error);
+ co_return std::unexpected{read_error};
}
const auto pdu_span = std::span<std::byte>(pdu_buffer.data(), received_length-1);
diff --git a/extensions/standard-processors/modbus/FetchModbusTcp.h b/extensions/standard-processors/modbus/FetchModbusTcp.h
index 68fe9cffd..a9cb07966 100644
--- a/extensions/standard-processors/modbus/FetchModbusTcp.h
+++ b/extensions/standard-processors/modbus/FetchModbusTcp.h
@@ -117,11 +117,11 @@ class FetchModbusTcp final : public core::ProcessorImpl {
core::ProcessSession& session,
const std::shared_ptr<core::FlowFile>& flow_file);
- nonstd::expected<core::Record, std::error_code> readModbus(const std::shared_ptr<utils::net::ConnectionHandlerBase>& connection_handler,
+ std::expected<core::Record, std::error_code> readModbus(const std::shared_ptr<utils::net::ConnectionHandlerBase>& connection_handler,
const std::unordered_map<std::string, std::unique_ptr<ReadModbusFunction>>& address_map);
- asio::awaitable<nonstd::expected<core::Record, std::error_code>> sendRequestsAndReadResponses(utils::net::ConnectionHandlerBase& connection_handler,
+ asio::awaitable<std::expected<core::Record, std::error_code>> sendRequestsAndReadResponses(utils::net::ConnectionHandlerBase& connection_handler,
const std::unordered_map<std::string, std::unique_ptr<ReadModbusFunction>>& address_map);
- asio::awaitable<nonstd::expected<core::RecordField, std::error_code>> sendRequestAndReadResponse(utils::net::ConnectionHandlerBase& connection_handler,
+ asio::awaitable<std::expected<core::RecordField, std::error_code>> sendRequestAndReadResponse(utils::net::ConnectionHandlerBase& connection_handler,
const ReadModbusFunction& read_modbus_function);
std::unordered_map<std::string, std::unique_ptr<ReadModbusFunction>> getAddressMap(core::ProcessContext& context, const core::FlowFile& flow_file);
static std::shared_ptr<core::FlowFile> getOrCreateFlowFile(core::ProcessContext& context, core::ProcessSession& session);
diff --git a/extensions/standard-processors/modbus/ReadModbusFunctions.cpp b/extensions/standard-processors/modbus/ReadModbusFunctions.cpp
index 6ade0dcf3..e92fe517b 100644
--- a/extensions/standard-processors/modbus/ReadModbusFunctions.cpp
+++ b/extensions/standard-processors/modbus/ReadModbusFunctions.cpp
@@ -36,13 +36,13 @@ std::vector<std::byte> ReadModbusFunction::requestBytes() const {
return request;
}
-[[nodiscard]] auto ReadModbusFunction::getRespBytes(std::span<const std::byte> resp_pdu) const -> nonstd::expected<std::span<const std::byte>, std::error_code> {
+[[nodiscard]] auto ReadModbusFunction::getRespBytes(std::span<const std::byte> resp_pdu) const -> std::expected<std::span<const std::byte>, std::error_code> {
if (resp_pdu.size() < 2) {
- return nonstd::make_unexpected(ModbusExceptionCode::MessageTooShort);
+ return std::unexpected{ModbusExceptionCode::MessageTooShort};
}
if (const auto resp_function_code = resp_pdu.front(); resp_function_code != getFunctionCode()) {
- return nonstd::make_unexpected(ModbusExceptionCode::UnexpectedResponseFunctionCode);
+ return std::unexpected{ModbusExceptionCode::UnexpectedResponseFunctionCode};
}
const auto resp_byte_count = static_cast<uint8_t>(resp_pdu[1]);
@@ -50,11 +50,11 @@ std::vector<std::byte> ReadModbusFunction::requestBytes() const {
constexpr uint8_t unit_id_length = 1;
const uint8_t expected_resp_pdu_size = resp_byte_count + function_code_length + unit_id_length;
if (resp_pdu.size() != expected_resp_pdu_size) {
- return nonstd::make_unexpected(ModbusExceptionCode::UnexpectedResponsePDUSize);
+ return std::unexpected{ModbusExceptionCode::UnexpectedResponsePDUSize};
}
if (resp_byte_count != expectedByteCount()) {
- return nonstd::make_unexpected(ModbusExceptionCode::InvalidResponse);
+ return std::unexpected{ModbusExceptionCode::InvalidResponse};
}
return resp_pdu.subspan(2, resp_pdu.size()-2);
@@ -69,10 +69,10 @@ std::vector<std::byte> ReadModbusFunction::requestBytes() const {
return result;
}
-[[nodiscard]] nonstd::expected<core::RecordField, std::error_code> ReadCoilStatus::responseToRecordField(const std::span<const std::byte> resp_pdu) const {
+[[nodiscard]] std::expected<core::RecordField, std::error_code> ReadCoilStatus::responseToRecordField(const std::span<const std::byte> resp_pdu) const {
const auto resp_bytes = getRespBytes(resp_pdu);
if (!resp_bytes)
- return nonstd::make_unexpected(resp_bytes.error());
+ return std::unexpected{resp_bytes.error()};
std::vector<bool> coils{};
diff --git a/extensions/standard-processors/modbus/ReadModbusFunctions.h b/extensions/standard-processors/modbus/ReadModbusFunctions.h
index cf6be3061..78f6bcf9a 100644
--- a/extensions/standard-processors/modbus/ReadModbusFunctions.h
+++ b/extensions/standard-processors/modbus/ReadModbusFunctions.h
@@ -54,12 +54,12 @@ class ReadModbusFunction {
[[nodiscard]] uint16_t getTransactionId() const { return transaction_id_; }
[[nodiscard]] uint8_t getUnitId() const { return unit_id_; }
- [[nodiscard]] virtual nonstd::expected<core::RecordField, std::error_code> responseToRecordField(std::span<const std::byte> resp_pdu) const = 0;
+ [[nodiscard]] virtual std::expected<core::RecordField, std::error_code> responseToRecordField(std::span<const std::byte> resp_pdu) const = 0;
static std::unique_ptr<ReadModbusFunction> parse(uint16_t transaction_id, uint8_t unit_id, const std::string& address);
protected:
- [[nodiscard]] auto getRespBytes(std::span<const std::byte> resp_pdu) const -> nonstd::expected<std::span<const std::byte>, std::error_code>;
+ [[nodiscard]] auto getRespBytes(std::span<const std::byte> resp_pdu) const -> std::expected<std::span<const std::byte>, std::error_code>;
[[nodiscard]] virtual std::byte getFunctionCode() const = 0;
[[nodiscard]] virtual std::array<std::byte, 5> rawPdu() const = 0;
@@ -77,7 +77,7 @@ class ReadCoilStatus : public ReadModbusFunction {
number_of_points_(number_of_points) {
}
- [[nodiscard]] nonstd::expected<core::RecordField, std::error_code> responseToRecordField(std::span<const std::byte> resp_pdu) const override;
+ [[nodiscard]] std::expected<core::RecordField, std::error_code> responseToRecordField(std::span<const std::byte> resp_pdu) const override;
[[nodiscard]] std::byte getFunctionCode() const override;
[[nodiscard]] std::array<std::byte, 5> rawPdu() const override;
@@ -120,10 +120,10 @@ class ReadRegisters : public ReadModbusFunction {
return expectedByteCount() / sizeof(uint16_t);
}
- [[nodiscard]] nonstd::expected<core::RecordField, std::error_code> responseToRecordField(const std::span<const std::byte> resp_pdu) const override {
+ [[nodiscard]] std::expected<core::RecordField, std::error_code> responseToRecordField(const std::span<const std::byte> resp_pdu) const override {
const auto resp_bytes = getRespBytes(resp_pdu);
if (!resp_bytes)
- return nonstd::make_unexpected(resp_bytes.error());
+ return std::unexpected{resp_bytes.error()};
std::vector<T> holding_registers{};
for (auto&& register_chunk : ranges::views::chunk(*resp_bytes, std::max(sizeof(T), sizeof(uint16_t)))) {
diff --git a/extensions/standard-processors/processors/ConvertRecord.cpp b/extensions/standard-processors/processors/ConvertRecord.cpp
index 00d864b8c..565bc6741 100644
--- a/extensions/standard-processors/processors/ConvertRecord.cpp
+++ b/extensions/standard-processors/processors/ConvertRecord.cpp
@@ -16,8 +16,9 @@
*/
#include "ConvertRecord.h"
+#include <expected>
+
#include "core/Resource.h"
-#include "nonstd/expected.hpp"
#include "utils/GeneralUtils.h"
#include "utils/ProcessorConfigUtils.h"
#include "minifi-cpp/utils/gsl.h"
@@ -40,7 +41,7 @@ void ConvertRecord::onTrigger(core::ProcessContext& context, core::ProcessSessio
return;
}
- nonstd::expected<core::RecordSet, std::error_code> record_set;
+ std::expected<core::RecordSet, std::error_code> record_set;
session.read(flow_file, [this, &record_set](const std::shared_ptr<io::InputStream>& input_stream) -> io::IoResult {
record_set = record_converter_->record_set_reader->read(*input_stream);
return io::IoResult::from(input_stream->size());
diff --git a/extensions/standard-processors/processors/InvokeHTTP.cpp b/extensions/standard-processors/processors/InvokeHTTP.cpp
index e652a00c6..a089cba5c 100644
--- a/extensions/standard-processors/processors/InvokeHTTP.cpp
+++ b/extensions/standard-processors/processors/InvokeHTTP.cpp
@@ -79,16 +79,16 @@ void HttpClientStore::returnClient(http::HTTPClient& client) {
} // namespace invoke_http
namespace {
-nonstd::expected<std::string_view, std::error_code> removePerSecSuffix(const std::string_view input) {
+std::expected<std::string_view, std::error_code> removePerSecSuffix(const std::string_view input) {
const auto trimmed_input = utils::string::trim(input);
if (trimmed_input.ends_with("/s") || trimmed_input.ends_with("/S")) {
return trimmed_input.substr(0, trimmed_input.size() - 2);
}
- return nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError);
+ return std::unexpected{core::ParsingErrorCode::GeneralParsingError};
}
} // namespace
-nonstd::expected<uint64_t, std::error_code> invoke_http::parseDataTransferSpeed(const std::string_view input) {
+std::expected<uint64_t, std::error_code> invoke_http::parseDataTransferSpeed(const std::string_view input) {
return removePerSecSuffix(input) | utils::andThen(parsing::parseDataSize);
}
diff --git a/extensions/standard-processors/processors/InvokeHTTP.h b/extensions/standard-processors/processors/InvokeHTTP.h
index d63a64387..702804853 100644
--- a/extensions/standard-processors/processors/InvokeHTTP.h
+++ b/extensions/standard-processors/processors/InvokeHTTP.h
@@ -62,7 +62,7 @@ class DataTransferSpeedValidator final : public core::PropertyValidator {
inline constexpr auto DATA_TRANSFER_SPEED_VALIDATOR = DataTransferSpeedValidator{};
-nonstd::expected<uint64_t, std::error_code> parseDataTransferSpeed(const std::string_view input);
+std::expected<uint64_t, std::error_code> parseDataTransferSpeed(const std::string_view input);
class HttpClientStore {
public:
diff --git a/extensions/standard-processors/processors/PutUDP.cpp b/extensions/standard-processors/processors/PutUDP.cpp
index aa4b1eb63..0320891a9 100644
--- a/extensions/standard-processors/processors/PutUDP.cpp
+++ b/extensions/standard-processors/processors/PutUDP.cpp
@@ -76,16 +76,16 @@ void PutUDP::onTrigger(core::ProcessContext& context, core::ProcessSession& sess
asio::io_context io_context;
- const auto resolve_hostname = [&io_context, &hostname, &port]() -> nonstd::expected<udp::resolver::results_type, std::error_code> {
+ const auto resolve_hostname = [&io_context, &hostname, &port]() -> std::expected<udp::resolver::results_type, std::error_code> {
udp::resolver resolver(io_context);
std::error_code error_code;
auto results = resolver.resolve(hostname, port, error_code);
if (error_code)
- return nonstd::make_unexpected(error_code);
+ return std::unexpected{error_code};
return results;
};
- const auto send_data_to_endpoint = [&io_context, &data, &logger = this->logger_](const udp::resolver::results_type& resolved_query) -> nonstd::expected<void, std::error_code> {
+ const auto send_data_to_endpoint = [&io_context, &data, &logger = this->logger_](const udp::resolver::results_type& resolved_query) -> std::expected<void, std::error_code> {
std::error_code error;
for (const auto& resolver_entry : resolved_query) {
error.clear();
@@ -103,7 +103,7 @@ void PutUDP::onTrigger(core::ProcessContext& context, core::ProcessSession& sess
logger->log_debug("sending to endpoint {} succeeded", resolver_entry.endpoint());
return {};
}
- return nonstd::make_unexpected(error);
+ return std::unexpected{error};
};
const auto transfer_to_success = [&session, &flow_file]() -> void {
diff --git a/extensions/standard-processors/processors/SplitRecord.cpp b/extensions/standard-processors/processors/SplitRecord.cpp
index ba501473a..3399610cb 100644
--- a/extensions/standard-processors/processors/SplitRecord.cpp
+++ b/extensions/standard-processors/processors/SplitRecord.cpp
@@ -16,8 +16,9 @@
*/
#include "SplitRecord.h"
+#include <expected>
+
#include "core/Resource.h"
-#include "nonstd/expected.hpp"
#include "utils/GeneralUtils.h"
#include "utils/ProcessorConfigUtils.h"
#include "minifi-cpp/utils/gsl.h"
@@ -31,7 +32,7 @@ void SplitRecord::onSchedule(core::ProcessContext& context, core::ProcessSession
};
}
-nonstd::expected<std::size_t, std::string> SplitRecord::readRecordsPerSplit(core::ProcessContext& context, const core::FlowFile& original_flow_file) {
+std::expected<std::size_t, std::string> SplitRecord::readRecordsPerSplit(core::ProcessContext& context, const core::FlowFile& original_flow_file) {
return context.getProperty(RecordsPerSplit, &original_flow_file)
| utils::andThen([](const auto& records_per_split_str) {
return parsing::parseIntegralMinMax<std::size_t>(records_per_split_str, 1, std::numeric_limits<std::size_t>::max());
@@ -54,7 +55,7 @@ void SplitRecord::onTrigger(core::ProcessContext& context, core::ProcessSession&
return;
}
- nonstd::expected<core::RecordSet, std::error_code> record_set;
+ std::expected<core::RecordSet, std::error_code> record_set;
session.read(original_flow_file, [this, &record_set](const std::shared_ptr<io::InputStream>& input_stream) -> io::IoResult {
record_set = record_converter_->record_set_reader->read(*input_stream);
return io::IoResult::from(input_stream->size());
diff --git a/extensions/standard-processors/processors/SplitRecord.h b/extensions/standard-processors/processors/SplitRecord.h
index c594024d3..d078ab820 100644
--- a/extensions/standard-processors/processors/SplitRecord.h
+++ b/extensions/standard-processors/processors/SplitRecord.h
@@ -86,7 +86,7 @@ class SplitRecord final : public core::AbstractProcessor<SplitRecord> {
void onTrigger(core::ProcessContext& context, core::ProcessSession& session) override;
private:
- static nonstd::expected<std::size_t, std::string> readRecordsPerSplit(core::ProcessContext& context, const core::FlowFile& original_flow_file);
+ static std::expected<std::size_t, std::string> readRecordsPerSplit(core::ProcessContext& context, const core::FlowFile& original_flow_file);
std::optional<core::RecordConverter> record_converter_;
};
diff --git a/extensions/standard-processors/processors/SplitText.cpp b/extensions/standard-processors/processors/SplitText.cpp
index 3573169a8..203e179e1 100644
--- a/extensions/standard-processors/processors/SplitText.cpp
+++ b/extensions/standard-processors/processors/SplitText.cpp
@@ -135,15 +135,15 @@ class SplitTextFragmentGenerator {
SplitTextFragmentGenerator(const std::shared_ptr<io::InputStream>& stream, const SplitTextConfiguration& split_text_config, size_t buffer_size);
std::optional<Fragment> readNextFragment();
- nonstd::expected<Fragment, const char*> readHeaderFragment();
+ std::expected<Fragment, const char*> readHeaderFragment();
[[nodiscard]] detail::StreamReadState getState() const { return line_reader_.getState(); }
private:
static void addLineToFragment(Fragment& fragment, const detail::LineReader::LineInfo& line);
void finalizeFragmentOffset(Fragment& current_fragment);
[[nodiscard]] bool lineSizeWouldExceedMaxFragmentSize(const detail::LineReader::LineInfo& line, uint64_t fragment_size) const;
- nonstd::expected<Fragment, const char*> createHeaderFragmentUsingLineCount();
- nonstd::expected<Fragment, const char*> createHeaderFragmentUsingHeaderMarkerCharacters();
+ std::expected<Fragment, const char*> createHeaderFragmentUsingLineCount();
+ std::expected<Fragment, const char*> createHeaderFragmentUsingHeaderMarkerCharacters();
detail::LineReader line_reader_;
// In case the read line would exceed the maximum fragment size, we need to buffer it for the next fragment
@@ -201,19 +201,19 @@ bool SplitTextFragmentGenerator::lineSizeWouldExceedMaxFragmentSize(const detail
return split_text_config_.maximum_fragment_size && fragment_size + line.size + header_fragment_size_ > split_text_config_.maximum_fragment_size.value();
}
-nonstd::expected<SplitTextFragmentGenerator::Fragment, const char*> SplitTextFragmentGenerator::createHeaderFragmentUsingLineCount() {
+std::expected<SplitTextFragmentGenerator::Fragment, const char*> SplitTextFragmentGenerator::createHeaderFragmentUsingLineCount() {
Fragment header_fragment;
for (uint64_t i = 0; i < split_text_config_.header_line_count; ++i) {
auto line = line_reader_.readNextLine();
if (!line) {
if (getState() == detail::StreamReadState::EndOfStream) {
- return nonstd::make_unexpected("The flow file's line count is less than the specified header line count!");
+ return std::unexpected{"The flow file's line count is less than the specified header line count!"};
} else {
- return nonstd::make_unexpected("Error while reading flow file stream!");
+ return std::unexpected{"Error while reading flow file stream!"};
}
}
if (lineSizeWouldExceedMaxFragmentSize(*line, header_fragment.fragment_size)) {
- return nonstd::make_unexpected("Header line would exceed the maximum fragment size!");
+ return std::unexpected{"Header line would exceed the maximum fragment size!"};
}
addLineToFragment(header_fragment, *line);
@@ -224,7 +224,7 @@ nonstd::expected<SplitTextFragmentGenerator::Fragment, const char*> SplitTextFra
return header_fragment;
}
-nonstd::expected<SplitTextFragmentGenerator::Fragment, const char*> SplitTextFragmentGenerator::createHeaderFragmentUsingHeaderMarkerCharacters() {
+std::expected<SplitTextFragmentGenerator::Fragment, const char*> SplitTextFragmentGenerator::createHeaderFragmentUsingHeaderMarkerCharacters() {
Fragment header_fragment;
while (auto line = line_reader_.readNextLine(split_text_config_.header_line_marker_characters)) {
if (line->size < split_text_config_.header_line_marker_characters->size() || !line->matches_starts_with) {
@@ -232,7 +232,7 @@ nonstd::expected<SplitTextFragmentGenerator::Fragment, const char*> SplitTextFra
break;
}
if (lineSizeWouldExceedMaxFragmentSize(*line, header_fragment.fragment_size)) {
- return nonstd::make_unexpected("Header line would exceed the maximum fragment size!");
+ return std::unexpected{"Header line would exceed the maximum fragment size!"};
}
addLineToFragment(header_fragment, *line);
@@ -243,7 +243,7 @@ nonstd::expected<SplitTextFragmentGenerator::Fragment, const char*> SplitTextFra
return header_fragment;
}
-nonstd::expected<SplitTextFragmentGenerator::Fragment, const char*> SplitTextFragmentGenerator::readHeaderFragment() {
+std::expected<SplitTextFragmentGenerator::Fragment, const char*> SplitTextFragmentGenerator::readHeaderFragment() {
gsl_Expects(flow_file_offset_ == 0 && (split_text_config_.header_line_count > 0 || split_text_config_.header_line_marker_characters));
if (split_text_config_.header_line_count > 0) {
return createHeaderFragmentUsingLineCount();
@@ -356,7 +356,7 @@ void ReadCallback::createFragmentFlowWithoutHeader(const SplitTextFragmentGenera
io::IoResult ReadCallback::operator()(const std::shared_ptr<io::InputStream>& stream) {
SplitTextFragmentGenerator fragment_generator(stream, split_text_config_, buffer_size_);
- nonstd::expected<SplitTextFragmentGenerator::Fragment, const char*> header_fragment;
+ std::expected<SplitTextFragmentGenerator::Fragment, const char*> header_fragment;
std::shared_ptr<core::FlowFile> header_flow; // cache header flow file to avoid cloning it for each fragment
if (split_text_config_.header_line_count > 0 || split_text_config_.header_line_marker_characters) {
header_fragment = fragment_generator.readHeaderFragment();
diff --git a/extensions/standard-processors/tests/CMakeLists.txt b/extensions/standard-processors/tests/CMakeLists.txt
index aecfc84ea..6d87a3433 100644
--- a/extensions/standard-processors/tests/CMakeLists.txt
+++ b/extensions/standard-processors/tests/CMakeLists.txt
@@ -17,9 +17,7 @@
# under the License.
#
-include(Coroutines)
include(JoltTests)
-enable_coroutines()
file(GLOB PROCESSOR_UNIT_TESTS "unit/*.cpp" "unit/modbus/*.cpp")
file(GLOB PROCESSOR_INTEGRATION_TESTS "integration/*.cpp")
diff --git a/extensions/standard-processors/tests/integration/InvokeHTTPTests.cpp b/extensions/standard-processors/tests/integration/InvokeHTTPTests.cpp
index d4e94b62f..67914def2 100644
--- a/extensions/standard-processors/tests/integration/InvokeHTTPTests.cpp
+++ b/extensions/standard-processors/tests/integration/InvokeHTTPTests.cpp
@@ -388,8 +388,8 @@ TEST_CASE("Data transfer speed parsing") {
CHECK(processors::invoke_http::parseDataTransferSpeed("10 kB/s") == 10_KiB);
CHECK(processors::invoke_http::parseDataTransferSpeed("20 MB/s") == 20_MiB);
CHECK(processors::invoke_http::parseDataTransferSpeed("19 TB/s") == 19_TiB);
- CHECK(processors::invoke_http::parseDataTransferSpeed("1KBinvalidsuffix") == nonstd::make_unexpected(make_error_code(core::ParsingErrorCode::GeneralParsingError)));
- CHECK(processors::invoke_http::parseDataTransferSpeed("1KB") == nonstd::make_unexpected(make_error_code(core::ParsingErrorCode::GeneralParsingError)));
+ CHECK(processors::invoke_http::parseDataTransferSpeed("1KBinvalidsuffix") == std::unexpected{make_error_code(core::ParsingErrorCode::GeneralParsingError)});
+ CHECK(processors::invoke_http::parseDataTransferSpeed("1KB") == std::unexpected{make_error_code(core::ParsingErrorCode::GeneralParsingError)});
}
TEST_CASE("InvokeHTTP: invalid characters are removed from outgoing HTTP headers", "[InvokeHTTP][http][attribute][header][sanitize]") {
diff --git a/extensions/standard-processors/utils/JoltUtils.cpp b/extensions/standard-processors/utils/JoltUtils.cpp
index bf9392527..66406b55b 100644
--- a/extensions/standard-processors/utils/JoltUtils.cpp
+++ b/extensions/standard-processors/utils/JoltUtils.cpp
@@ -51,7 +51,7 @@ bool Spec::Template::check(std::string_view str) {
return false;
}
-nonstd::expected<std::pair<Spec::Template, Spec::It>, std::string> Spec::Template::parse(It begin, It end) {
+std::expected<std::pair<Spec::Template, Spec::It>, std::string> Spec::Template::parse(It begin, It end) {
enum class State {
Plain,
Escaped,
@@ -93,10 +93,10 @@ nonstd::expected<std::pair<Spec::Template, Spec::It>, std::string> Spec::Templat
}
case State::Escaped: {
if (!ch) {
- return nonstd::make_unexpected("Unterminated escape sequence");
+ return std::unexpected{"Unterminated escape sequence"};
}
if (ch != '\\' && !isSpecialChar(ch.value())) {
- return nonstd::make_unexpected(fmt::format("Unknown escape sequence in template '\\{}'", ch.value()));
+ return std::unexpected{fmt::format("Unknown escape sequence in template '\\{}'", ch.value())};
}
fragments.back() += ch.value();
state = State::Plain;
@@ -135,7 +135,7 @@ nonstd::expected<std::pair<Spec::Template, Spec::It>, std::string> Spec::Templat
target += ch.value();
state = State::ParentIndex;
} else {
- return nonstd::make_unexpected(fmt::format("Expected an index at {}", std::distance(begin, ch_it)));
+ return std::unexpected{fmt::format("Expected an index at {}", std::distance(begin, ch_it))};
}
break;
}
@@ -149,7 +149,7 @@ nonstd::expected<std::pair<Spec::Template, Spec::It>, std::string> Spec::Templat
references.back().first = std::stoi(target);
state = State::Plain;
} else {
- return nonstd::make_unexpected(fmt::format("Invalid character at {}, expected digit, comma or close parenthesis", std::distance(begin, ch_it)));
+ return std::unexpected{fmt::format("Invalid character at {}, expected digit, comma or close parenthesis", std::distance(begin, ch_it))};
}
break;
}
@@ -159,7 +159,7 @@ nonstd::expected<std::pair<Spec::Template, Spec::It>, std::string> Spec::Templat
target += ch.value();
state = State::MatchIndex;
} else {
- return nonstd::make_unexpected(fmt::format("Expected an index at {}", std::distance(begin, ch_it)));
+ return std::unexpected{fmt::format("Expected an index at {}", std::distance(begin, ch_it))};
}
break;
}
@@ -170,7 +170,7 @@ nonstd::expected<std::pair<Spec::Template, Spec::It>, std::string> Spec::Templat
references.back().second = std::stoi(target);
state = State::Plain;
} else {
- return nonstd::make_unexpected(fmt::format("Invalid character at {}, expected digit or close parenthesis", std::distance(begin, ch_it)));
+ return std::unexpected{fmt::format("Invalid character at {}, expected digit or close parenthesis", std::distance(begin, ch_it))};
}
break;
}
@@ -213,7 +213,7 @@ bool Spec::Regex::check(std::string_view str) {
return false;
}
-nonstd::expected<Spec::Regex, std::string> Spec::Regex::parse(std::string_view str) {
+std::expected<Spec::Regex, std::string> Spec::Regex::parse(std::string_view str) {
enum class State {
Plain,
Escaped
@@ -239,10 +239,10 @@ nonstd::expected<Spec::Regex, std::string> Spec::Regex::parse(std::string_view s
}
case State::Escaped: {
if (!ch) {
- return nonstd::make_unexpected("Unterminated escape sequence");
+ return std::unexpected{"Unterminated escape sequence"};
}
if (ch != '\\' && !isSpecialChar(ch.value())) {
- return nonstd::make_unexpected(fmt::format("Unknown escape sequence in pattern '\\{}'", ch.value()));
+ return std::unexpected{fmt::format("Unknown escape sequence in pattern '\\{}'", ch.value())};
}
fragments.back() += ch.value();
state = State::Plain;
@@ -312,7 +312,7 @@ std::optional<std::vector<std::string_view>> Spec::Regex::match(std::string_view
namespace {
-nonstd::expected<std::pair<Spec::Destination, Spec::It>, std::string> parseDestination(const Spec::Context& ctx, Spec::It begin, Spec::It end);
+std::expected<std::pair<Spec::Destination, Spec::It>, std::string> parseDestination(const Spec::Context& ctx, Spec::It begin, Spec::It end);
Spec::Destinations parseDestinations(const Spec::Context& ctx, const rapidjson::Value& val);
Spec::Pattern::Value parseValue(const Spec::Context& ctx, const rapidjson::Value& val);
@@ -460,29 +460,29 @@ std::string parseLiteral(std::string_view str) {
return result;
}
-nonstd::expected<std::pair<Spec::Path, Spec::It>, std::string> parsePath(const Spec::Context& ctx, Spec::It begin, Spec::It end) {
+std::expected<std::pair<Spec::Path, Spec::It>, std::string> parsePath(const Spec::Context& ctx, Spec::It begin, Spec::It end) {
auto dst = parseDestination(ctx, begin, end);
if (!dst) {
- return nonstd::make_unexpected(std::move(dst.error()));
+ return std::unexpected{std::move(dst.error())};
}
Spec::Path result;
for (auto&& [member, type] : std::move(dst->first)) {
if (!holds_alternative<Spec::Template>(member)) {
- return nonstd::make_unexpected(fmt::format("Value reference at {} cannot contain nested value reference path", ctx.path()));
+ return std::unexpected{fmt::format("Value reference at {} cannot contain nested value reference path", ctx.path())};
}
result.emplace_back(std::move(std::get<Spec::Template>(member)), type);
}
return std::pair<Spec::Path, Spec::It>{result, dst->second};
}
-nonstd::expected<std::pair<Spec::ValueRef, Spec::It>, std::string> parseValueReference(const Spec::Context& ctx, Spec::It begin, Spec::It end, bool greedy_path) {
+std::expected<std::pair<Spec::ValueRef, Spec::It>, std::string> parseValueReference(const Spec::Context& ctx, Spec::It begin, Spec::It end, bool greedy_path) {
using ResultT = std::pair<Spec::ValueRef, Spec::It>;
auto it = begin;
if (it == end) {
- return nonstd::make_unexpected("Cannot parse value reference from empty string");
+ return std::unexpected{"Cannot parse value reference from empty string"};
}
if (*it != '@') {
- return nonstd::make_unexpected("Value reference must start with '@'");
+ return std::unexpected{"Value reference must start with '@'"};
}
++it;
if (it == end) {
@@ -522,11 +522,11 @@ nonstd::expected<std::pair<Spec::ValueRef, Spec::It>, std::string> parseValueRef
auto idx_end = it;
idx = std::stoull(std::string{idx_begin, idx_end});
if (it == end) {
- return nonstd::make_unexpected("Expected ')' in value reference");
+ return std::unexpected{"Expected ')' in value reference"};
}
if (*it != ',') {
if (*it != ')') {
- return nonstd::make_unexpected("Expected ')' in value reference");
+ return std::unexpected{"Expected ')' in value reference"};
}
++it;
return ResultT{{idx, {}}, it};
@@ -535,15 +535,15 @@ nonstd::expected<std::pair<Spec::ValueRef, Spec::It>, std::string> parseValueRef
++it;
}
if (it == end) {
- return nonstd::make_unexpected("Expected member accessor in value reference");
+ return std::unexpected{"Expected member accessor in value reference"};
}
auto path = parsePath(ctx, it, end);
if (!path) {
- return nonstd::make_unexpected(fmt::format("Invalid path in value reference: {}", path.error()));
+ return std::unexpected{fmt::format("Invalid path in value reference: {}", path.error())};
}
it = path->second;
if (it == end || *it != ')') {
- return nonstd::make_unexpected("Expected ')' in value reference");
+ return std::unexpected{"Expected ')' in value reference"};
}
++it;
return ResultT{{idx, std::move(path->first)}, it};
@@ -661,13 +661,13 @@ std::unique_ptr<Spec::Pattern> parseMap(const Spec::Context& ctx, const rapidjso
return map;
}
-nonstd::expected<std::pair<Spec::MatchingIndex, Spec::It>, std::string> parseMatchingIndex(Spec::It begin, Spec::It end) {
+std::expected<std::pair<Spec::MatchingIndex, Spec::It>, std::string> parseMatchingIndex(Spec::It begin, Spec::It end) {
auto it = begin;
if (it == end) {
- return nonstd::make_unexpected("Empty matching index");
+ return std::unexpected{"Empty matching index"};
}
if (*it != '#') {
- return nonstd::make_unexpected("Matching must start with a '#'");
+ return std::unexpected{"Matching must start with a '#'"};
}
++it;
auto idx_begin = it;
@@ -678,7 +678,7 @@ nonstd::expected<std::pair<Spec::MatchingIndex, Spec::It>, std::string> parseMat
}
// dot-delimited list of templates and value references
-nonstd::expected<std::pair<Spec::Destination, Spec::It>, std::string> parseDestination(const Spec::Context& ctx, Spec::It begin, Spec::It end) {
+std::expected<std::pair<Spec::Destination, Spec::It>, std::string> parseDestination(const Spec::Context& ctx, Spec::It begin, Spec::It end) {
Spec::Destination result;
Spec::MemberType type = Spec::MemberType::FIELD;
auto ch_it = begin;
@@ -688,10 +688,10 @@ nonstd::expected<std::pair<Spec::Destination, Spec::It>, std::string> parseDesti
while (!isEnd()) {
if (auto match_idx = parseMatchingIndex(ch_it, end)) {
if (type != Spec::MemberType::INDEX) {
- return nonstd::make_unexpected("Matching index can only be used in index context, e.g. apple[#2]");
+ return std::unexpected{"Matching index can only be used in index context, e.g. apple[#2]"};
}
if (!ctx.find(match_idx->first)) {
- return nonstd::make_unexpected(fmt::format("Invalid matching index at {} to ancestor {}", ctx.path(), match_idx->first));
+ return std::unexpected{fmt::format("Invalid matching index at {} to ancestor {}", ctx.path(), match_idx->first)};
}
Spec::Destination::value_type result_element{match_idx->first, type};
result.push_back(result_element);
@@ -705,11 +705,11 @@ nonstd::expected<std::pair<Spec::Destination, Spec::It>, std::string> parseDesti
result.push_back({std::move(templ->first), type});
ch_it = templ->second;
} else {
- return nonstd::make_unexpected(fmt::format("Could not parse neither value reference or template in {} at {}", ctx.path(), std::distance(begin, ch_it)));
+ return std::unexpected{fmt::format("Could not parse neither value reference or template in {} at {}", ctx.path(), std::distance(begin, ch_it))};
}
if (type == Spec::MemberType::INDEX) {
if (ch_it == end || *ch_it != ']') {
- return nonstd::make_unexpected(fmt::format("Expected closing index ']' in {} at {}", ctx.path(), std::distance(begin, ch_it)));
+ return std::unexpected{fmt::format("Expected closing index ']' in {} at {}", ctx.path(), std::distance(begin, ch_it))};
}
++ch_it;
}
@@ -719,14 +719,14 @@ nonstd::expected<std::pair<Spec::Destination, Spec::It>, std::string> parseDesti
} else if (*ch_it == '[') {
type = Spec::MemberType::INDEX;
} else {
- return nonstd::make_unexpected(fmt::format("Unexpected destination delimiter '{}' in {} at {}", *ch_it, ctx.path(), std::distance(begin, ch_it)));
+ return std::unexpected{fmt::format("Unexpected destination delimiter '{}' in {} at {}", *ch_it, ctx.path(), std::distance(begin, ch_it))};
}
++ch_it;
if (ch_it == end) {
if (type == Spec::MemberType::FIELD) {
- return nonstd::make_unexpected(fmt::format("Unterminated member in {} at {}", ctx.path(), std::distance(begin, ch_it)));
+ return std::unexpected{fmt::format("Unterminated member in {} at {}", ctx.path(), std::distance(begin, ch_it))};
} else {
- return nonstd::make_unexpected(fmt::format("Unterminated indexed member in {} at {}", ctx.path(), std::distance(begin, ch_it)));
+ return std::unexpected{fmt::format("Unterminated indexed member in {} at {}", ctx.path(), std::distance(begin, ch_it))};
}
}
}
@@ -807,7 +807,7 @@ std::pair<std::string, std::string> toString(const Spec::Context& ctx, const Spe
return {raw, result};
}
-nonstd::expected<std::reference_wrapper<const rapidjson::Value>, std::string> resolvePath(const Spec::Context& ctx, std::string_view root_path, const rapidjson::Value& root, const Spec::Path& path);
+std::expected<std::reference_wrapper<const rapidjson::Value>, std::string> resolvePath(const Spec::Context& ctx, std::string_view root_path, const rapidjson::Value& root, const Spec::Path& path);
Spec::Pattern::Value parseValue(const Spec::Context& ctx, const rapidjson::Value& val) {
if (val.IsObject()) {
@@ -953,7 +953,7 @@ void putValue(const Spec::Context& ctx, const Spec::Destinations& destinations,
}
}
-nonstd::expected<std::reference_wrapper<const rapidjson::Value>, std::string> resolvePath(const Spec::Context& ctx, std::string_view root_path, const rapidjson::Value& root, const Spec::Path& path) {
+std::expected<std::reference_wrapper<const rapidjson::Value>, std::string> resolvePath(const Spec::Context& ctx, std::string_view root_path, const rapidjson::Value& root, const Spec::Path& path) {
std::string full_path{root_path};
std::reference_wrapper<const rapidjson::Value> result = std::ref(root);
for (auto& [templ, type] : path) {
@@ -961,20 +961,20 @@ nonstd::expected<std::reference_wrapper<const rapidjson::Value>, std::string> re
if (type == Spec::MemberType::FIELD) {
full_path += "." + member;
if (!result.get().IsObject()) {
- return nonstd::make_unexpected(fmt::format("Expected object at {}", full_path));
+ return std::unexpected{fmt::format("Expected object at {}", full_path)};
}
if (!result.get().HasMember(member)) {
- return nonstd::make_unexpected(fmt::format("Object does not have member '{}' at {}", member, full_path));
+ return std::unexpected{fmt::format("Object does not have member '{}' at {}", member, full_path)};
}
result = result.get()[member];
} else if (type == Spec::MemberType::INDEX) {
size_t idx = std::stoull(member);
full_path += "[" + member + "]";
if (!result.get().IsArray()) {
- return nonstd::make_unexpected(fmt::format("Expected array at {}", full_path));
+ return std::unexpected{fmt::format("Expected array at {}", full_path)};
}
if (result.get().Size() <= idx) {
- return nonstd::make_unexpected(fmt::format("Array of size {} does not have item at index {} at {}", result.get().Size(), idx, full_path));
+ return std::unexpected{fmt::format("Array of size {} does not have item at index {} at {}", result.get().Size(), idx, full_path)};
}
result = result.get()[gsl::narrow<rapidjson::SizeType>(idx)];
}
@@ -984,17 +984,17 @@ nonstd::expected<std::reference_wrapper<const rapidjson::Value>, std::string> re
} // namespace
-nonstd::expected<Spec, std::string> Spec::parse(std::string_view str, std::shared_ptr<core::logging::Logger> logger) {
+std::expected<Spec, std::string> Spec::parse(std::string_view str, std::shared_ptr<core::logging::Logger> logger) {
rapidjson::Document doc;
rapidjson::ParseResult res = doc.Parse(str.data(), str.length());
if (!res) {
- return nonstd::make_unexpected(fmt::format("{} at {}", rapidjson::GetParseError_En(res.Code()), res.Offset()));
+ return std::unexpected{fmt::format("{} at {}", rapidjson::GetParseError_En(res.Code()), res.Offset())};
}
try {
Spec::Context ctx{.matches = {"root"}, .logger = std::move(logger)};
return Spec{parseMap(ctx, doc)};
} catch (const std::exception& ex) {
- return nonstd::make_unexpected(ex.what());
+ return std::unexpected{ex.what()};
}
}
@@ -1129,13 +1129,13 @@ void Spec::Pattern::process(const Context& ctx, const rapidjson::Value &input, r
}
}
-nonstd::expected<rapidjson::Document, std::string> Spec::process(const rapidjson::Value &input, std::shared_ptr<core::logging::Logger> logger) const {
+std::expected<rapidjson::Document, std::string> Spec::process(const rapidjson::Value &input, std::shared_ptr<core::logging::Logger> logger) const {
rapidjson::Document output;
try {
value_->process(Context{.matches = {"root"}, .node = &input, .logger = std::move(logger)}, input, output);
return output;
} catch (const std::exception& ex) {
- return nonstd::make_unexpected(ex.what());
+ return std::unexpected{ex.what()};
}
}
diff --git a/extensions/standard-processors/utils/JoltUtils.h b/extensions/standard-processors/utils/JoltUtils.h
index 62bbaa50a..06f105a8b 100644
--- a/extensions/standard-processors/utils/JoltUtils.h
+++ b/extensions/standard-processors/utils/JoltUtils.h
@@ -100,17 +100,17 @@ class Spec {
// checks if the string is definitely a template (i.e. has an unescaped '&' char)
static bool check(std::string_view str);
- static nonstd::expected<Template, std::string> parse(std::string_view str) {
+ static std::expected<Template, std::string> parse(std::string_view str) {
if (auto res = parse(str.begin(), str.end())) {
if (res->second != str.end()) {
- return nonstd::make_unexpected("Failed to fully parse template");
+ return std::unexpected{"Failed to fully parse template"};
}
return {std::move(res->first)};
} else {
- return nonstd::make_unexpected(std::move(res.error()));
+ return std::unexpected{std::move(res.error())};
}
}
- static nonstd::expected<std::pair<Template, It>, std::string> parse(It begin, It end);
+ static std::expected<std::pair<Template, It>, std::string> parse(It begin, It end);
std::string eval(const Context& ctx) const;
@@ -140,7 +140,7 @@ class Spec {
}
// checks if the string is definitely a regex (i.e. has an unescaped '*' char)
static bool check(std::string_view str);
- static nonstd::expected<Regex, std::string> parse(std::string_view str);
+ static std::expected<Regex, std::string> parse(std::string_view str);
std::optional<std::vector<std::string_view>> match(std::string_view str) const;
@@ -194,9 +194,9 @@ class Spec {
std::map<std::string, Destinations> defaults; // #thing: a.b
};
- static nonstd::expected<Spec, std::string> parse(std::string_view str, std::shared_ptr<core::logging::Logger> logger = {});
+ static std::expected<Spec, std::string> parse(std::string_view str, std::shared_ptr<core::logging::Logger> logger = {});
- nonstd::expected<rapidjson::Document, std::string> process(const rapidjson::Value& input, std::shared_ptr<core::logging::Logger> logger = {}) const;
+ std::expected<rapidjson::Document, std::string> process(const rapidjson::Value& input, std::shared_ptr<core::logging::Logger> logger = {}) const;
private:
explicit Spec(std::unique_ptr<Pattern> value): value_(std::move(value)) {}
diff --git a/extensions/windows-event-log/ConsumeWindowsEventLog.cpp b/extensions/windows-event-log/ConsumeWindowsEventLog.cpp
index 236d2abc6..9b96d8b88 100644
--- a/extensions/windows-event-log/ConsumeWindowsEventLog.cpp
+++ b/extensions/windows-event-log/ConsumeWindowsEventLog.cpp
@@ -430,7 +430,7 @@ void ConsumeWindowsEventLog::substituteXMLPercentageItems(pugi::xml_document& do
doc.traverse(treeWalker);
}
-nonstd::expected<std::string, std::string> ConsumeWindowsEventLog::renderEventAsXml(EVT_HANDLE event_handle) {
+std::expected<std::string, std::string> ConsumeWindowsEventLog::renderEventAsXml(EVT_HANDLE event_handle) {
logger_->log_trace("Rendering an event");
WCHAR stackBuffer[4096];
DWORD size = sizeof(stackBuffer);
@@ -441,32 +441,32 @@ nonstd::expected<std::string, std::string> ConsumeWindowsEventLog::renderEventAs
DWORD propertyCount = 0;
if (!EvtRender(nullptr, event_handle, EvtRenderEventXml, size, buf.get(), &used, &propertyCount)) {
if (ERROR_INSUFFICIENT_BUFFER != GetLastError()) {
- return nonstd::make_unexpected(fmt::format("EvtRender failed due to {}", wel::getLastError()));
+ return std::unexpected{fmt::format("EvtRender failed due to {}", wel::getLastError())};
}
if (used > max_buffer_size_) {
- return nonstd::make_unexpected(fmt::format("Dropping event because it couldn't be rendered within {} bytes.", max_buffer_size_));
+ return std::unexpected{fmt::format("Dropping event because it couldn't be rendered within {} bytes.", max_buffer_size_)};
}
size = used;
buf.reset((LPWSTR) malloc(size));
if (!buf) {
- return nonstd::make_unexpected("malloc failed");
+ return std::unexpected{"malloc failed"};
}
if (!EvtRender(nullptr, event_handle, EvtRenderEventXml, size, buf.get(), &used, &propertyCount)) {
- return nonstd::make_unexpected(fmt::format("EvtRender failed due to {}", wel::getLastError()));
+ return std::unexpected{fmt::format("EvtRender failed due to {}", wel::getLastError())};
}
}
logger_->log_trace("Event rendered with size {}", used);
return utils::to_string(std::wstring{buf.get()});
}
-nonstd::expected<wel::ProcessedEvent, std::string> ConsumeWindowsEventLog::processEvent(EVT_HANDLE event_handle) {
+std::expected<wel::ProcessedEvent, std::string> ConsumeWindowsEventLog::processEvent(EVT_HANDLE event_handle) {
auto event_as_xml = renderEventAsXml(event_handle);
if (!event_as_xml)
- return nonstd::make_unexpected(event_as_xml.error());
+ return std::unexpected{event_as_xml.error()};
pugi::xml_document doc;
if (!doc.load_string(event_as_xml->c_str()))
- return nonstd::make_unexpected("Invalid XML produced");
+ return std::unexpected{"Invalid XML produced"};
wel::ProcessedEvent result;
diff --git a/extensions/windows-event-log/ConsumeWindowsEventLog.h b/extensions/windows-event-log/ConsumeWindowsEventLog.h
index cbf6fc706..f6368454f 100644
--- a/extensions/windows-event-log/ConsumeWindowsEventLog.h
+++ b/extensions/windows-event-log/ConsumeWindowsEventLog.h
@@ -216,10 +216,10 @@ class ConsumeWindowsEventLog : public core::ProcessorImpl {
void createAndCommitFlowFile(const wel::ProcessedEvent& processed_event, core::ProcessSession& session) const;
wel::WindowsEventLogProvider& getEventLogProvider(const std::string& name);
wel::HeaderNames createHeaderNames(const std::optional<std::string>& event_header_property) const;
- nonstd::expected<wel::ProcessedEvent, std::string> processEvent(EVT_HANDLE event_handle);
+ std::expected<wel::ProcessedEvent, std::string> processEvent(EVT_HANDLE event_handle);
void substituteXMLPercentageItems(pugi::xml_document& doc);
std::function<std::string(const std::string&)> userIdToUsernameFunction() const;
- nonstd::expected<std::string, std::string> renderEventAsXml(EVT_HANDLE event_handle);
+ std::expected<std::string, std::string> renderEventAsXml(EVT_HANDLE event_handle);
bool commitAndSaveBookmark(const std::wstring& bookmarkXml, core::ProcessContext& context, core::ProcessSession& session, core::StateManager* state_manager);
std::tuple<size_t, std::wstring> processEventLogs(core::ProcessSession& session, EVT_HANDLE event_query_results);
std::unique_ptr<wel::Bookmark> createBookmark(const core::ProcessContext& context, core::StateManager* state_manager) const;
diff --git a/extensions/windows-event-log/wel/Bookmark.cpp b/extensions/windows-event-log/wel/Bookmark.cpp
index 2adc364c2..1c83221d7 100644
--- a/extensions/windows-event-log/wel/Bookmark.cpp
+++ b/extensions/windows-event-log/wel/Bookmark.cpp
@@ -138,9 +138,9 @@ bool Bookmark::saveBookmark(EVT_HANDLE event_handle) {
return saveBookmarkXml(*bookmark_xml);
}
-nonstd::expected<std::wstring, std::string> Bookmark::getNewBookmarkXml(EVT_HANDLE hEvent) {
+std::expected<std::wstring, std::string> Bookmark::getNewBookmarkXml(EVT_HANDLE hEvent) {
if (!EvtUpdateBookmark(hBookmark_.get(), hEvent)) {
- return nonstd::make_unexpected(fmt::format("EvtUpdateBookmark failed due to {}", wel::getLastError()));
+ return std::unexpected{fmt::format("EvtUpdateBookmark failed due to {}", wel::getLastError())};
}
// Render the bookmark as an XML string that can be persisted.
logger_->log_trace("Rendering new bookmark");
@@ -149,17 +149,17 @@ nonstd::expected<std::wstring, std::string> Bookmark::getNewBookmarkXml(EVT_HAND
DWORD propertyCount{};
bool event_render_succeeded_without_buffer = EvtRender(nullptr, hBookmark_.get(), EvtRenderBookmark, bufferSize, nullptr, &bufferUsed, &propertyCount);
if (event_render_succeeded_without_buffer)
- return nonstd::make_unexpected("EvtRender failed to determine the required buffer size.");
+ return std::unexpected{"EvtRender failed to determine the required buffer size."};
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
- return nonstd::make_unexpected(fmt::format("EvtRender failed due to {}", wel::getLastError()));
+ return std::unexpected{fmt::format("EvtRender failed due to {}", wel::getLastError())};
}
bufferSize = bufferUsed;
std::vector<wchar_t> buf(bufferSize / 2 + 1);
if (!EvtRender(nullptr, hBookmark_.get(), EvtRenderBookmark, bufferSize, buf.data(), &bufferUsed, &propertyCount)) {
- return nonstd::make_unexpected(fmt::format("EvtRender failed due to {}", wel::getLastError()));
+ return std::unexpected{fmt::format("EvtRender failed due to {}", wel::getLastError())};
}
return std::wstring(buf.data());
diff --git a/extensions/windows-event-log/wel/Bookmark.h b/extensions/windows-event-log/wel/Bookmark.h
index ff9002f17..827351dfc 100644
--- a/extensions/windows-event-log/wel/Bookmark.h
+++ b/extensions/windows-event-log/wel/Bookmark.h
@@ -46,7 +46,7 @@ class Bookmark {
void setStateManager(core::StateManager* state_manager) { state_manager_ = state_manager; }
bool isValid() const noexcept;
/* non-owning */ EVT_HANDLE getBookmarkHandleFromXML();
- nonstd::expected<std::wstring, std::string> getNewBookmarkXml(EVT_HANDLE hEvent);
+ std::expected<std::wstring, std::string> getNewBookmarkXml(EVT_HANDLE hEvent);
bool saveBookmarkXml(const std::wstring& bookmarkXml);
private:
diff --git a/extensions/windows-event-log/wel/WindowsEventLog.cpp b/extensions/windows-event-log/wel/WindowsEventLog.cpp
index d929534e3..c5d4b4470 100644
--- a/extensions/windows-event-log/wel/WindowsEventLog.cpp
+++ b/extensions/windows-event-log/wel/WindowsEventLog.cpp
@@ -167,7 +167,7 @@ std::string WindowsEventLogProvider::getEventDataImpl(EVT_FORMAT_MESSAGE_FLAGS f
return utils::to_string(std::wstring{buffer.get()});
}
-nonstd::expected<std::string, std::error_code> WindowsEventLogProvider::getEventMessage(EVT_HANDLE event_handle) const {
+std::expected<std::string, std::error_code> WindowsEventLogProvider::getEventMessage(EVT_HANDLE event_handle) const {
std::string returnValue;
WCHAR stack_buffer[4096];
DWORD num_chars_in_buffer = sizeof(stack_buffer) / sizeof(stack_buffer[0]);
@@ -182,17 +182,17 @@ nonstd::expected<std::string, std::error_code> WindowsEventLogProvider::getEvent
DWORD status = GetLastError();
if (status != ERROR_INSUFFICIENT_BUFFER)
- return nonstd::make_unexpected(utils::OsUtils::windowsErrorToErrorCode(status));
+ return std::unexpected{utils::OsUtils::windowsErrorToErrorCode(status)};
num_chars_in_buffer = num_chars_used;
buffer.reset((LPWSTR) malloc(num_chars_in_buffer * sizeof(WCHAR)));
if (!buffer)
- return nonstd::make_unexpected(utils::OsUtils::windowsErrorToErrorCode(ERROR_OUTOFMEMORY));
+ return std::unexpected{utils::OsUtils::windowsErrorToErrorCode(ERROR_OUTOFMEMORY)};
if (EvtFormatMessage(provider_handle_.get(), event_handle, 0, 0, nullptr,
EvtFormatMessageEvent, num_chars_in_buffer,
buffer.get(), &num_chars_used))
return utils::to_string(std::wstring{buffer.get()});
- return nonstd::make_unexpected(utils::OsUtils::windowsErrorToErrorCode(GetLastError()));
+ return std::unexpected{utils::OsUtils::windowsErrorToErrorCode(GetLastError())};
}
namespace {
diff --git a/extensions/windows-event-log/wel/WindowsEventLog.h b/extensions/windows-event-log/wel/WindowsEventLog.h
index 95ac9bc50..634d4f441 100644
--- a/extensions/windows-event-log/wel/WindowsEventLog.h
+++ b/extensions/windows-event-log/wel/WindowsEventLog.h
@@ -92,7 +92,7 @@ class WindowsEventLogProvider {
WindowsEventLogProvider() : provider_handle_(nullptr) {}
explicit WindowsEventLogProvider(EVT_HANDLE provider_handle) : provider_handle_(provider_handle) {}
- nonstd::expected<std::string, std::error_code> getEventMessage(EVT_HANDLE event_handle) const;
+ std::expected<std::string, std::error_code> getEventMessage(EVT_HANDLE event_handle) const;
[[nodiscard]] std::string getEventData(EVT_FORMAT_MESSAGE_FLAGS field, const std::string& key, EVT_HANDLE event_handle) const;
private:
diff --git a/libminifi/CMakeLists.txt b/libminifi/CMakeLists.txt
index fba4b84c0..85a7da3f8 100644
--- a/libminifi/CMakeLists.txt
+++ b/libminifi/CMakeLists.txt
@@ -83,13 +83,10 @@ endif()
include(RangeV3)
include(Asio)
include(MagicEnum)
-list(APPEND LIBMINIFI_LIBRARIES minifi-core-framework yaml-cpp ZLIB::ZLIB concurrentqueue RapidJSON spdlog::spdlog Threads::Threads gsl-lite libsodium range-v3 expected-lite asio magic_enum OpenSSL::Crypto OpenSSL::SSL CURL::libcurl RapidJSON fmt::fmt)
+list(APPEND LIBMINIFI_LIBRARIES minifi-core-framework yaml-cpp ZLIB::ZLIB concurrentqueue RapidJSON spdlog::spdlog Threads::Threads gsl-lite libsodium range-v3 asio magic_enum OpenSSL::Crypto OpenSSL::SSL CURL::libcurl RapidJSON fmt::fmt)
if(NOT WIN32)
list(APPEND LIBMINIFI_LIBRARIES OSSP::libuuid++)
endif()
-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9)
- list(APPEND LIBMINIFI_LIBRARIES stdc++fs)
-endif()
target_link_libraries(core-minifi ${CMAKE_DL_LIBS} ${LIBMINIFI_LIBRARIES})
if (APPLE)
target_link_libraries(core-minifi "-framework CoreFoundation -framework SystemConfiguration")
diff --git a/libminifi/include/FlowController.h b/libminifi/include/FlowController.h
index ddeafba51..5473dd6d0 100644
--- a/libminifi/include/FlowController.h
+++ b/libminifi/include/FlowController.h
@@ -98,7 +98,7 @@ class FlowController : public core::controller::ForwardingControllerServiceProvi
int16_t resume() override;
// Unload the current flow, clean the root process group and all its children
int16_t stop() override;
- nonstd::expected<void, std::string> applyUpdate(const std::string &source, const std::string &configuration, bool persist, const std::optional<std::string>& flow_id) override;
+ std::expected<void, std::string> applyUpdate(const std::string &source, const std::string &configuration, bool persist, const std::optional<std::string>& flow_id) override;
int16_t drainRepositories() override {
return -1;
}
@@ -120,7 +120,7 @@ class FlowController : public core::controller::ForwardingControllerServiceProvi
// first it will validate the payload with the current root node config for flowController
// like FlowController id/name is the same and new version is greater than the current version
// after that, it will apply the configuration
- nonstd::expected<void, std::string> applyConfiguration(const std::string &source, const std::string &configurePayload, const std::optional<std::string>& flow_id = std::nullopt);
+ std::expected<void, std::string> applyConfiguration(const std::string &source, const std::string &configurePayload, const std::optional<std::string>& flow_id = std::nullopt);
std::string getName() const override {
return root_wrapper_.getName();
diff --git a/libminifi/include/SchedulingAgent.h b/libminifi/include/SchedulingAgent.h
index f1e3b892b..d5cab7af5 100644
--- a/libminifi/include/SchedulingAgent.h
+++ b/libminifi/include/SchedulingAgent.h
@@ -86,10 +86,10 @@ class SchedulingAgent {
bool processorYields(core::Processor* processor) const;
- nonstd::expected<void, std::exception_ptr> triggerAndCommit(core::Processor* processor,
+ std::expected<void, std::exception_ptr> triggerAndCommit(core::Processor* processor,
const std::shared_ptr<core::ProcessContext>& process_context,
const std::shared_ptr<core::ProcessSessionFactory>& session_factory);
- nonstd::expected<bool, std::exception_ptr> trigger(core::Processor* processor,
+ std::expected<bool, std::exception_ptr> trigger(core::Processor* processor,
const std::shared_ptr<core::ProcessContext>& process_context,
const std::shared_ptr<core::ProcessSession>& process_session);
diff --git a/libminifi/include/c2/C2Utils.h b/libminifi/include/c2/C2Utils.h
index 7389e489e..4911cc5aa 100644
--- a/libminifi/include/c2/C2Utils.h
+++ b/libminifi/include/c2/C2Utils.h
@@ -36,6 +36,6 @@ inline constexpr const char* CONTROLLER_SOCKET_METRICS_PUBLISHER = "ControllerSo
bool isC2Enabled(const std::shared_ptr<Configure>& configuration);
bool isControllerSocketEnabled(const std::shared_ptr<Configure>& configuration);
-nonstd::expected<std::shared_ptr<io::BufferStream>, std::string> createDebugBundleArchive(const std::map<std::string, std::unique_ptr<io::InputStream>>& files);
+std::expected<std::shared_ptr<io::BufferStream>, std::string> createDebugBundleArchive(const std::map<std::string, std::unique_ptr<io::InputStream>>& files);
} // namespace org::apache::nifi::minifi::c2
diff --git a/libminifi/include/c2/FlowStatusBuilder.h b/libminifi/include/c2/FlowStatusBuilder.h
index 63ccd6255..7770d68f8 100644
--- a/libminifi/include/c2/FlowStatusBuilder.h
+++ b/libminifi/include/c2/FlowStatusBuilder.h
@@ -40,14 +40,14 @@ class FlowStatusBuilder {
void addProcessorStatus(core::Processor* processor, rapidjson::Value& processor_status_list, rapidjson::Document::AllocatorType& allocator,
const std::unordered_set<FlowStatusQueryOption>& options);
core::Processor* findProcessor(const std::string& processor_id);
- nonstd::expected<void, std::string> addProcessorStatuses(rapidjson::Value& processor_status_list, rapidjson::Document::AllocatorType& allocator,
+ std::expected<void, std::string> addProcessorStatuses(rapidjson::Value& processor_status_list, rapidjson::Document::AllocatorType& allocator,
const std::string& identifier, const std::unordered_set<FlowStatusQueryOption>& options);
static void addConnectionStatus(Connection* connection, rapidjson::Value& connection_status_list, rapidjson::Document::AllocatorType& allocator,
const std::unordered_set<FlowStatusQueryOption>& options);
- nonstd::expected<void, std::string> addConnectionStatuses(rapidjson::Value& connection_status_list, rapidjson::Document::AllocatorType& allocator,
+ std::expected<void, std::string> addConnectionStatuses(rapidjson::Value& connection_status_list, rapidjson::Document::AllocatorType& allocator,
const std::string& identifier, const std::unordered_set<FlowStatusQueryOption>& options);
- nonstd::expected<void, std::string> addInstanceStatus(rapidjson::Value& instance_status, rapidjson::Document::AllocatorType& allocator, const std::unordered_set<FlowStatusQueryOption>& options);
- nonstd::expected<void, std::string> addSystemDiagnosticsStatus(rapidjson::Value& system_diagnostics_status, rapidjson::Document::AllocatorType& allocator,
+ std::expected<void, std::string> addInstanceStatus(rapidjson::Value& instance_status, rapidjson::Document::AllocatorType& allocator, const std::unordered_set<FlowStatusQueryOption>& options);
+ std::expected<void, std::string> addSystemDiagnosticsStatus(rapidjson::Value& system_diagnostics_status, rapidjson::Document::AllocatorType& allocator,
const std::unordered_set<FlowStatusQueryOption>& options);
std::mutex root_mutex_;
diff --git a/libminifi/include/core/ProcessContextImpl.h b/libminifi/include/core/ProcessContextImpl.h
index 32ab936e5..9466e69df 100644
--- a/libminifi/include/core/ProcessContextImpl.h
+++ b/libminifi/include/core/ProcessContextImpl.h
@@ -65,14 +65,14 @@ class ProcessContextImpl : public core::VariableRegistryImpl, public virtual Pro
bool hasNonEmptyProperty(std::string_view name) const override;
bool isRunning() const override;
- nonstd::expected<std::string, std::error_code> getProperty(std::string_view name, const FlowFile*) const override;
- nonstd::expected<void, std::error_code> setProperty(std::string_view name, std::string value) override;
- nonstd::expected<void, std::error_code> clearProperty(std::string_view name) override;
- nonstd::expected<std::string, std::error_code> getDynamicProperty(std::string_view name, const FlowFile*) const override;
- nonstd::expected<void, std::error_code> setDynamicProperty(std::string name, std::string value) override;
- nonstd::expected<std::string, std::error_code> getRawProperty(std::string_view name) const override;
- nonstd::expected<std::string, std::error_code> getRawDynamicProperty(std::string_view name) const override;
- [[nodiscard]] nonstd::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const override;
+ std::expected<std::string, std::error_code> getProperty(std::string_view name, const FlowFile*) const override;
+ std::expected<void, std::error_code> setProperty(std::string_view name, std::string value) override;
+ std::expected<void, std::error_code> clearProperty(std::string_view name) override;
+ std::expected<std::string, std::error_code> getDynamicProperty(std::string_view name, const FlowFile*) const override;
+ std::expected<void, std::error_code> setDynamicProperty(std::string name, std::string value) override;
+ std::expected<std::string, std::error_code> getRawProperty(std::string_view name) const override;
+ std::expected<std::string, std::error_code> getRawDynamicProperty(std::string_view name) const override;
+ [[nodiscard]] std::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const override;
bool hasIncomingConnections() const override;
void addAutoTerminatedRelationship(const core::Relationship& relationship) override;
diff --git a/libminifi/include/core/ProcessSession.h b/libminifi/include/core/ProcessSession.h
index 0abc13a02..72494dd1b 100644
--- a/libminifi/include/core/ProcessSession.h
+++ b/libminifi/include/core/ProcessSession.h
@@ -57,7 +57,7 @@ class ProcessSessionImpl : public ReferenceContainerImpl, public virtual Process
void commit() override;
void rollback() override;
- nonstd::expected<void, std::string> rollbackNoThrow() noexcept override;
+ std::expected<void, std::string> rollbackNoThrow() noexcept override;
std::shared_ptr<provenance::ProvenanceReporter> getProvenanceReporter() override {
return provenance_report_;
diff --git a/libminifi/include/core/controller/ControllerService.h b/libminifi/include/core/controller/ControllerService.h
index a4c26f547..8133c4dd8 100644
--- a/libminifi/include/core/controller/ControllerService.h
+++ b/libminifi/include/core/controller/ControllerService.h
@@ -52,8 +52,8 @@ class ControllerService : public ConfigurableComponentImpl, public CoreComponent
class ControllerServiceContextImpl : public ControllerServiceContext {
public:
explicit ControllerServiceContextImpl(ControllerService& impl): impl_(impl) {}
- [[nodiscard]] nonstd::expected<std::string, std::error_code> getProperty(std::string_view name) const override;
- [[nodiscard]] nonstd::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const override;
+ [[nodiscard]] std::expected<std::string, std::error_code> getProperty(std::string_view name) const override;
+ [[nodiscard]] std::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const override;
private:
ControllerService& impl_;
@@ -146,11 +146,11 @@ inline void ControllerService::ControllerServiceDescriptorImpl::setSupportedProp
impl_.setSupportedProperties(properties);
}
-inline nonstd::expected<std::string, std::error_code> ControllerService::ControllerServiceContextImpl::getProperty(std::string_view name) const {
+inline std::expected<std::string, std::error_code> ControllerService::ControllerServiceContextImpl::getProperty(std::string_view name) const {
return impl_.getProperty(name);
}
-inline nonstd::expected<std::vector<std::string>, std::error_code> ControllerService::ControllerServiceContextImpl::getAllPropertyValues(std::string_view name) const {
+inline std::expected<std::vector<std::string>, std::error_code> ControllerService::ControllerServiceContextImpl::getAllPropertyValues(std::string_view name) const {
return impl_.getAllPropertyValues(name);
}
diff --git a/libminifi/include/core/flow/Node.h b/libminifi/include/core/flow/Node.h
index f127288b7..c237211c4 100644
--- a/libminifi/include/core/flow/Node.h
+++ b/libminifi/include/core/flow/Node.h
@@ -24,7 +24,7 @@
#include <string>
#include <memory>
#include <utility>
-#include "nonstd/expected.hpp"
+#include <expected>
#include "utils/StringUtils.h"
#include "minifi-cpp/utils/gsl.h"
diff --git a/libminifi/include/core/state/UpdateController.h b/libminifi/include/core/state/UpdateController.h
index 652f43f8d..bed22a5b6 100644
--- a/libminifi/include/core/state/UpdateController.h
+++ b/libminifi/include/core/state/UpdateController.h
@@ -159,7 +159,7 @@ class StateMonitor : public StateController {
/**
* Apply an update with the provided string.
*/
- virtual nonstd::expected<void, std::string> applyUpdate(const std::string & source, const std::string &configuration,
+ virtual std::expected<void, std::string> applyUpdate(const std::string & source, const std::string &configuration,
bool persist = false, const std::optional<std::string>& flow_id = std::nullopt) = 0;
/**
* Returns uptime for this module.
diff --git a/libminifi/include/core/state/nodes/ResponseNodeLoader.h b/libminifi/include/core/state/nodes/ResponseNodeLoader.h
index fd606a609..d4c4240af 100644
--- a/libminifi/include/core/state/nodes/ResponseNodeLoader.h
+++ b/libminifi/include/core/state/nodes/ResponseNodeLoader.h
@@ -55,7 +55,7 @@ class ResponseNodeLoaderImpl : public ResponseNodeLoader {
private:
void initializeComponentMetrics();
std::vector<SharedResponseNode> getComponentMetricsNodes(const std::string& metrics_class) const;
- nonstd::expected<SharedResponseNode, std::string> getSystemMetricsNode(const std::string& clazz);
+ std::expected<SharedResponseNode, std::string> getSystemMetricsNode(const std::string& clazz);
std::vector<SharedResponseNode> getResponseNodes(const std::string& clazz);
void initializeRepositoryMetrics(const SharedResponseNode& response_node) const;
void initializeQueueMetrics(const SharedResponseNode& response_node) const;
diff --git a/libminifi/include/utils/file/AssetManager.h b/libminifi/include/utils/file/AssetManager.h
index e90561c2e..7d7d41036 100644
--- a/libminifi/include/utils/file/AssetManager.h
+++ b/libminifi/include/utils/file/AssetManager.h
@@ -53,8 +53,8 @@ class AssetManager {
public:
explicit AssetManager(const Configure& configuration);
- nonstd::expected<void, std::string> sync(const AssetLayout& layout,
- const std::function<nonstd::expected<void, std::string>(std::string_view /*url*/, const std::filesystem::path& /*tmp_path*/)>& fetch);
+ std::expected<void, std::string> sync(const AssetLayout& layout,
+ const std::function<std::expected<void, std::string>(std::string_view /*url*/, const std::filesystem::path& /*tmp_path*/)>& fetch);
std::string hash() const;
diff --git a/libminifi/src/FlowController.cpp b/libminifi/src/FlowController.cpp
index a9eaa280c..a6b199b98 100644
--- a/libminifi/src/FlowController.cpp
+++ b/libminifi/src/FlowController.cpp
@@ -107,20 +107,20 @@ FlowController::~FlowController() {
logger_->log_trace("Destroying FlowController");
}
-nonstd::expected<void, std::string> FlowController::applyConfiguration(const std::string &source, const std::string &configurePayload, const std::optional<std::string>& flow_id) {
+std::expected<void, std::string> FlowController::applyConfiguration(const std::string &source, const std::string &configurePayload, const std::optional<std::string>& flow_id) {
std::unique_ptr<core::ProcessGroup> newRoot;
try {
newRoot = updateFromPayload(source, configurePayload, flow_id);
} catch (const std::exception& ex) {
logger_->log_error("Invalid configuration payload, type: {}, what: {}", typeid(ex).name(), ex.what());
- return nonstd::make_unexpected(fmt::format("Invalid configuration payload, type: {}, what: {}", typeid(ex).name(), ex.what()));
+ return std::unexpected{fmt::format("Invalid configuration payload, type: {}, what: {}", typeid(ex).name(), ex.what())};
} catch (...) {
logger_->log_error("Invalid configuration payload, type: {}", getCurrentExceptionTypeName());
- return nonstd::make_unexpected(fmt::format("Invalid configuration payload, type: {}", getCurrentExceptionTypeName()));
+ return std::unexpected{fmt::format("Invalid configuration payload, type: {}", getCurrentExceptionTypeName())};
}
if (newRoot == nullptr)
- return nonstd::make_unexpected("Could not create root process group");
+ return std::unexpected{"Could not create root process group"};
logger_->log_info("Starting to reload Flow Controller with flow control name {}, version {}", newRoot->getName(), newRoot->getVersion());
@@ -163,7 +163,7 @@ nonstd::expected<void, std::string> FlowController::applyConfiguration(const std
}
if (!started) {
- return nonstd::make_unexpected("Failed to start flow");
+ return std::unexpected{"Failed to start flow"};
}
return {};
}
@@ -379,7 +379,7 @@ std::vector<std::string> FlowController::getSupportedConfigurationFormats() cons
return flow_configuration_->getSupportedFormats();
}
-nonstd::expected<void, std::string> FlowController::applyUpdate(const std::string &source, const std::string &configuration, bool persist, const std::optional<std::string>& flow_id) {
+std::expected<void, std::string> FlowController::applyUpdate(const std::string &source, const std::string &configuration, bool persist, const std::optional<std::string>& flow_id) {
auto result = applyConfiguration(source, configuration, flow_id);
if (result) {
if (persist) {
diff --git a/libminifi/src/SchedulingAgent.cpp b/libminifi/src/SchedulingAgent.cpp
index aed4c2a8d..1a58263ef 100644
--- a/libminifi/src/SchedulingAgent.cpp
+++ b/libminifi/src/SchedulingAgent.cpp
@@ -62,7 +62,7 @@ bool SchedulingAgent::processorYields(core::Processor* processor) const {
return false;
}
-nonstd::expected<void, std::exception_ptr> SchedulingAgent::triggerAndCommit(core::Processor* processor,
+std::expected<void, std::exception_ptr> SchedulingAgent::triggerAndCommit(core::Processor* processor,
const std::shared_ptr<core::ProcessContext>& process_context,
const std::shared_ptr<core::ProcessSessionFactory>& session_factory) {
gsl_Expects(processor);
@@ -92,17 +92,17 @@ nonstd::expected<void, std::exception_ptr> SchedulingAgent::triggerAndCommit(cor
logger_->log_warn("Caught Exception during SchedulingAgent::onTrigger of processor {} (uuid: {}), type: {}, what: {}",
processor->getName(), processor->getUUIDStr(), typeid(exception).name(), exception.what());
processor->yield(admin_yield_duration_);
- return nonstd::make_unexpected(std::current_exception());
+ return std::unexpected{std::current_exception()};
} catch (...) {
logger_->log_warn("Caught Exception during SchedulingAgent::onTrigger of processor {} (uuid: {}), type: {}",
processor->getName(), processor->getUUIDStr(), getCurrentExceptionTypeName());
processor->yield(admin_yield_duration_);
- return nonstd::make_unexpected(std::current_exception());
+ return std::unexpected{std::current_exception()};
}
return {};
}
-nonstd::expected<bool, std::exception_ptr> SchedulingAgent::trigger(core::Processor* processor,
+std::expected<bool, std::exception_ptr> SchedulingAgent::trigger(core::Processor* processor,
const std::shared_ptr<core::ProcessContext>& process_context,
const std::shared_ptr<core::ProcessSession>& process_session) {
gsl_Expects(processor);
@@ -130,12 +130,12 @@ nonstd::expected<bool, std::exception_ptr> SchedulingAgent::trigger(core::Proces
logger_->log_warn("Caught Exception during SchedulingAgent::onTrigger of processor {} (uuid: {}), type: {}, what: {}",
processor->getName(), processor->getUUIDStr(), typeid(exception).name(), exception.what());
processor->yield(admin_yield_duration_);
- return nonstd::make_unexpected(std::current_exception());
+ return std::unexpected{std::current_exception()};
} catch (...) {
logger_->log_warn("Caught Exception during SchedulingAgent::onTrigger of processor {} (uuid: {}), type: {}",
processor->getName(), processor->getUUIDStr(), getCurrentExceptionTypeName());
processor->yield(admin_yield_duration_);
- return nonstd::make_unexpected(std::current_exception());
+ return std::unexpected{std::current_exception()};
}
return true;
}
diff --git a/libminifi/src/c2/C2Agent.cpp b/libminifi/src/c2/C2Agent.cpp
index ec8ab6842..ba96745ba 100644
--- a/libminifi/src/c2/C2Agent.cpp
+++ b/libminifi/src/c2/C2Agent.cpp
@@ -321,14 +321,14 @@ struct C2DebugBundleError : public C2TransferError {
using C2TransferError::C2TransferError;
};
-nonstd::expected<void, std::string> fetchAssetAsFile(C2Protocol& protocol, const std::string& url, const std::filesystem::path& file_path, const std::shared_ptr<core::logging::Logger>& logger) {
+std::expected<void, std::string> fetchAssetAsFile(C2Protocol& protocol, const std::string& url, const std::filesystem::path& file_path, const std::shared_ptr<core::logging::Logger>& logger) {
if (utils::file::create_dir(file_path.parent_path()) != 0) {
- return nonstd::make_unexpected(fmt::format("Failed to create directory '{}'", file_path.parent_path().string()));
+ return std::unexpected{fmt::format("Failed to create directory '{}'", file_path.parent_path().string())};
}
std::ofstream file{file_path, std::ofstream::binary};
if (!file) {
- return nonstd::make_unexpected(fmt::format("Failed to open file to write '{}'", file_path.string()));
+ return std::unexpected{fmt::format("Failed to open file to write '{}'", file_path.string())};
}
bool success = protocol.fetch(url, [&] (std::span<const char> chunk) {
file.write(chunk.data(), gsl::narrow<std::streamsize>(chunk.size()));
@@ -343,7 +343,7 @@ nonstd::expected<void, std::string> fetchAssetAsFile(C2Protocol& protocol, const
} else {
logger->log_info("Successfully removed partial asset file '{}'", file_path.string());
}
- return nonstd::make_unexpected(fmt::format("Failed to fetch asset from '{}'", url));
+ return std::unexpected{fmt::format("Failed to fetch asset from '{}'", url)};
}
return {};
}
@@ -801,12 +801,12 @@ void C2Agent::handle_sync(const org::apache::nifi::minifi::c2::C2ContentResponse
send_error(fmt::format("Malformed request, 'resourceList[{}]' is not an object", resource_idx));
return;
}
- auto get_member_str = [&] (const char* key) -> nonstd::expected<std::string_view, std::string> {
+ auto get_member_str = [&] (const char* key) -> std::expected<std::string_view, std::string> {
if (!resource.HasMember(key)) {
- return nonstd::make_unexpected(fmt::format("Malformed request, 'resourceList[{}]' has no member '{}'", resource_idx, key));
+ return std::unexpected{fmt::format("Malformed request, 'resourceList[{}]' has no member '{}'", resource_idx, key)};
}
if (!resource[key].IsString()) {
- return nonstd::make_unexpected(fmt::format("Malformed request, 'resourceList[{}].{}' is not a string", resource_idx, key));
+ return std::unexpected{fmt::format("Malformed request, 'resourceList[{}].{}' is not a string", resource_idx, key)};
}
return std::string_view{resource[key].GetString(), resource[key].GetStringLength()};
};
@@ -855,10 +855,10 @@ void C2Agent::handle_sync(const org::apache::nifi::minifi::c2::C2ContentResponse
});
}
- auto result = asset_manager_->sync(asset_layout, [&] (std::string_view url, const std::filesystem::path& file_path) -> nonstd::expected<void, std::string> {
+ auto result = asset_manager_->sync(asset_layout, [&] (std::string_view url, const std::filesystem::path& file_path) -> std::expected<void, std::string> {
auto resolved_url = resolveUrl(std::string{url});
if (!resolved_url) {
- return nonstd::make_unexpected("Couldn't resolve url");
+ return std::unexpected{"Couldn't resolve url"};
}
return fetchAssetAsFile(*protocol_, resolved_url.value(), file_path, logger_);
});
diff --git a/libminifi/src/c2/C2Utils.cpp b/libminifi/src/c2/C2Utils.cpp
index 00a8f6d9e..d6f998295 100644
--- a/libminifi/src/c2/C2Utils.cpp
+++ b/libminifi/src/c2/C2Utils.cpp
@@ -34,29 +34,29 @@ bool isControllerSocketEnabled(const std::shared_ptr<Configure>& configuration)
return utils::string::toBool(controller_socket_enable_str).value_or(false);
}
-nonstd::expected<std::shared_ptr<io::BufferStream>, std::string> createDebugBundleArchive(const std::map<std::string, std::unique_ptr<io::InputStream>>& files) {
+std::expected<std::shared_ptr<io::BufferStream>, std::string> createDebugBundleArchive(const std::map<std::string, std::unique_ptr<io::InputStream>>& files) {
auto stream_provider = core::ClassLoader::getDefaultClassLoader().instantiate<io::ArchiveStreamProvider>(
"ArchiveStreamProvider", "ArchiveStreamProvider");
if (!stream_provider) {
- return nonstd::make_unexpected("Couldn't instantiate archiver provider");
+ return std::unexpected{"Couldn't instantiate archiver provider"};
}
auto bundle = std::make_shared<io::BufferStream>();
auto archiver = stream_provider->createWriteStream(9, "gzip", bundle, nullptr);
if (!archiver) {
- return nonstd::make_unexpected("Couldn't instantiate archiver");
+ return std::unexpected{"Couldn't instantiate archiver"};
}
for (const auto& [filename, stream] : files) {
size_t file_size = stream->size();
if (!archiver->newEntry({filename, file_size})) {
- return nonstd::make_unexpected("Couldn't initialize archive entry for '" + filename + "'");
+ return std::unexpected{"Couldn't initialize archive entry for '" + filename + "'"};
}
if (gsl::narrow<int64_t>(file_size) != minifi::internal::pipe(*stream, *archiver).toI64()) {
// we have touched the input streams, they cannot be reused
- return nonstd::make_unexpected("Error while writing file '" + filename + "' into the debug bundle");
+ return std::unexpected{"Error while writing file '" + filename + "' into the debug bundle"};
}
}
if (!archiver->finish()) {
- return nonstd::make_unexpected("Failed to complete debug bundle archive");
+ return std::unexpected{"Failed to complete debug bundle archive"};
}
return bundle;
}
diff --git a/libminifi/src/c2/FlowStatusBuilder.cpp b/libminifi/src/c2/FlowStatusBuilder.cpp
index b4bcb8986..7512c31a1 100644
--- a/libminifi/src/c2/FlowStatusBuilder.cpp
+++ b/libminifi/src/c2/FlowStatusBuilder.cpp
@@ -109,7 +109,7 @@ core::Processor* FlowStatusBuilder::findProcessor(const std::string& processor_i
return nullptr;
}
-nonstd::expected<void, std::string> FlowStatusBuilder::addProcessorStatuses(rapidjson::Value& processor_status_list, rapidjson::Document::AllocatorType& allocator,
+std::expected<void, std::string> FlowStatusBuilder::addProcessorStatuses(rapidjson::Value& processor_status_list, rapidjson::Document::AllocatorType& allocator,
const std::string& identifier, const std::unordered_set<FlowStatusQueryOption>& options) {
static const std::unordered_set<FlowStatusQueryOption> valid_options = {
FlowStatusQueryOption::health,
@@ -120,14 +120,14 @@ nonstd::expected<void, std::string> FlowStatusBuilder::addProcessorStatuses(rapi
for (const auto& option : options) {
if (!valid_options.contains(option)) {
logger_->log_error("Unable to get processorStatus: Invalid query option for processor status '{}'", magic_enum::enum_name(option));
- return nonstd::make_unexpected(fmt::format("Unable to get processorStatus: Invalid query option for processor status '{}'", magic_enum::enum_name(option)));
+ return std::unexpected{fmt::format("Unable to get processorStatus: Invalid query option for processor status '{}'", magic_enum::enum_name(option))};
}
}
std::lock_guard<std::mutex> guard(root_mutex_);
if (identifier.empty()) {
logger_->log_error("Unable to get processorStatus: Query is incomplete");
- return nonstd::make_unexpected("Unable to get processorStatus: Query is incomplete");
+ return std::unexpected{"Unable to get processorStatus: Query is incomplete"};
} else if (identifier == "all") {
for (const auto processor : processors_) {
addProcessorStatus(processor, processor_status_list, allocator, options);
@@ -136,7 +136,7 @@ nonstd::expected<void, std::string> FlowStatusBuilder::addProcessorStatuses(rapi
auto processor = findProcessor(identifier);
if (!processor) {
logger_->log_error("Unable to get processorStatus: No processor with key '{}' to report status on", identifier);
- return nonstd::make_unexpected(fmt::format("Unable to get processorStatus: No processor with key '{}' to report status on", identifier));
+ return std::unexpected{fmt::format("Unable to get processorStatus: No processor with key '{}' to report status on", identifier)};
}
addProcessorStatus(processor, processor_status_list, allocator, options);
}
@@ -164,18 +164,18 @@ void FlowStatusBuilder::addConnectionStatus(Connection* connection, rapidjson::V
connection_status_list.PushBack(connection_status, allocator);
}
-nonstd::expected<void, std::string> FlowStatusBuilder::addConnectionStatuses(rapidjson::Value& connection_status_list, rapidjson::Document::AllocatorType& allocator,
+std::expected<void, std::string> FlowStatusBuilder::addConnectionStatuses(rapidjson::Value& connection_status_list, rapidjson::Document::AllocatorType& allocator,
const std::string& identifier, const std::unordered_set<FlowStatusQueryOption>& options) {
for (const auto& option : options) {
if (option != FlowStatusQueryOption::health) {
logger_->log_error("Unable to get connectionStatus: Invalid query option for connection status '{}'", magic_enum::enum_name(option));
- return nonstd::make_unexpected(fmt::format("Unable to get connectionStatus: Invalid query option for connection status '{}'", magic_enum::enum_name(option)));
+ return std::unexpected{fmt::format("Unable to get connectionStatus: Invalid query option for connection status '{}'", magic_enum::enum_name(option))};
}
}
std::lock_guard<std::mutex> guard(root_mutex_);
if (identifier.empty()) {
logger_->log_error("Unable to get connectionStatus: Query is incomplete");
- return nonstd::make_unexpected("Unable to get connectionStatus: Query is incomplete");
+ return std::unexpected{"Unable to get connectionStatus: Query is incomplete"};
}
if (identifier == "all") {
@@ -187,14 +187,14 @@ nonstd::expected<void, std::string> FlowStatusBuilder::addConnectionStatuses(rap
addConnectionStatus(connection_map_[identifier], connection_status_list, allocator, options);
} else {
logger_->log_error("Unable to get connectionStatus: No connection with key '{}' to report status on", identifier);
- return nonstd::make_unexpected(fmt::format("Unable to get connectionStatus: No connection with key '{}' to report status on", identifier));
+ return std::unexpected{fmt::format("Unable to get connectionStatus: No connection with key '{}' to report status on", identifier)};
}
}
return {};
}
-nonstd::expected<void, std::string> FlowStatusBuilder::addInstanceStatus(rapidjson::Value& instance_status, rapidjson::Document::AllocatorType& allocator,
+std::expected<void, std::string> FlowStatusBuilder::addInstanceStatus(rapidjson::Value& instance_status, rapidjson::Document::AllocatorType& allocator,
const std::unordered_set<FlowStatusQueryOption>& options) {
static const std::unordered_set<FlowStatusQueryOption> valid_options = {
FlowStatusQueryOption::health,
@@ -205,7 +205,7 @@ nonstd::expected<void, std::string> FlowStatusBuilder::addInstanceStatus(rapidjs
for (const auto& option : options) {
if (!valid_options.contains(option)) {
logger_->log_error("Unable to get instance: Invalid query option for instance status '{}'", magic_enum::enum_name(option));
- return nonstd::make_unexpected(fmt::format("Unable to get instance: Invalid query option for instance status '{}'", magic_enum::enum_name(option)));
+ return std::unexpected{fmt::format("Unable to get instance: Invalid query option for instance status '{}'", magic_enum::enum_name(option))};
}
}
@@ -273,7 +273,7 @@ nonstd::expected<void, std::string> FlowStatusBuilder::addInstanceStatus(rapidjs
return {};
}
-nonstd::expected<void, std::string> FlowStatusBuilder::addSystemDiagnosticsStatus(rapidjson::Value& system_diagnostics_status, rapidjson::Document::AllocatorType& allocator,
+std::expected<void, std::string> FlowStatusBuilder::addSystemDiagnosticsStatus(rapidjson::Value& system_diagnostics_status, rapidjson::Document::AllocatorType& allocator,
const std::unordered_set<FlowStatusQueryOption>& options) {
static const std::unordered_set<FlowStatusQueryOption> valid_options = {
FlowStatusQueryOption::processorstats,
@@ -284,7 +284,7 @@ nonstd::expected<void, std::string> FlowStatusBuilder::addSystemDiagnosticsStatu
for (const auto& option : options) {
if (!valid_options.contains(option)) {
logger_->log_error("Unable to get systemDiagnostics: Invalid query option for system diagnostics '{}'", magic_enum::enum_name(option));
- return nonstd::make_unexpected(fmt::format("Unable to get systemDiagnostics: Invalid query option for system diagnostics '{}'", magic_enum::enum_name(option)));
+ return std::unexpected{fmt::format("Unable to get systemDiagnostics: Invalid query option for system diagnostics '{}'", magic_enum::enum_name(option))};
}
}
@@ -350,7 +350,7 @@ rapidjson::Document FlowStatusBuilder::buildFlowStatus(const std::vector<FlowSta
auto allocator = doc.GetAllocator();
- auto handleError = [&doc, &allocator](const nonstd::expected<void, std::string>& result) {
+ auto handleError = [&doc, &allocator](const std::expected<void, std::string>& result) {
if (result) {
return;
}
diff --git a/libminifi/src/core/ProcessContextImpl.cpp b/libminifi/src/core/ProcessContextImpl.cpp
index 34846cc8a..841b74ca5 100644
--- a/libminifi/src/core/ProcessContextImpl.cpp
+++ b/libminifi/src/core/ProcessContextImpl.cpp
@@ -32,7 +32,7 @@ class StandardProcessorInfo : public ProcessorInfo {
[[nodiscard]] utils::Identifier getUUID() const override {return proc_.getUUID();}
[[nodiscard]] std::shared_ptr<state::FlowIdentifier> getFlowIdentifier() const override {return proc_.getFlowIdentifier();}
[[nodiscard]] std::map<std::string, core::Property, std::less<>> getSupportedProperties() const override {return proc_.getSupportedProperties();}
- [[nodiscard]] nonstd::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const override {return proc_.getSupportedProperty(name);}
+ [[nodiscard]] std::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const override {return proc_.getSupportedProperty(name);}
private:
Processor& proc_;
@@ -99,10 +99,10 @@ uint8_t ProcessContextImpl::getMaxConcurrentTasks() const { return processor_.ge
void ProcessContextImpl::yield() { processor_.yield(); }
-nonstd::expected<std::string, std::error_code> ProcessContextImpl::getProperty(const std::string_view name, const FlowFile* flow_file) const {
+std::expected<std::string, std::error_code> ProcessContextImpl::getProperty(const std::string_view name, const FlowFile* flow_file) const {
const auto property = getProcessorInfo().getSupportedProperty(name);
if (!property) {
- return nonstd::make_unexpected(PropertyErrorCode::NotSupportedProperty);
+ return std::unexpected{PropertyErrorCode::NotSupportedProperty};
}
if (!property->supportsExpressionLanguage()) {
@@ -116,22 +116,22 @@ nonstd::expected<std::string, std::error_code> ProcessContextImpl::getProperty(c
expression::Parameters p(this, flow_file);
auto result = cached_expressions_[std::string{name}](p).asString();
if (!property->getValidator().validate(result)) {
- return nonstd::make_unexpected(PropertyErrorCode::ValidationFailed);
+ return std::unexpected{PropertyErrorCode::ValidationFailed};
}
return result;
}
-nonstd::expected<void, std::error_code> ProcessContextImpl::setProperty(const std::string_view name, std::string value) {
+std::expected<void, std::error_code> ProcessContextImpl::setProperty(const std::string_view name, std::string value) {
cached_expressions_.erase(std::string{name});
return getProcessor().setProperty(name, std::move(value));
}
-nonstd::expected<void, std::error_code> ProcessContextImpl::clearProperty(const std::string_view name) {
+std::expected<void, std::error_code> ProcessContextImpl::clearProperty(const std::string_view name) {
cached_expressions_.erase(std::string{name});
return getProcessor().clearProperty(name);
}
-nonstd::expected<std::string, std::error_code> ProcessContextImpl::getDynamicProperty(const std::string_view name, const FlowFile* flow_file) const {
+std::expected<std::string, std::error_code> ProcessContextImpl::getDynamicProperty(const std::string_view name, const FlowFile* flow_file) const {
if (!cached_dynamic_expressions_.contains(name)) {
auto expression_str = getProcessor().getDynamicProperty(name);
if (!expression_str) { return expression_str; }
@@ -141,20 +141,20 @@ nonstd::expected<std::string, std::error_code> ProcessContextImpl::getDynamicPro
return cached_dynamic_expressions_[std::string{name}](p).asString();
}
-nonstd::expected<std::string, std::error_code> ProcessContextImpl::getRawProperty(const std::string_view name) const {
+std::expected<std::string, std::error_code> ProcessContextImpl::getRawProperty(const std::string_view name) const {
return getProcessor().getProperty(name);
}
-nonstd::expected<std::string, std::error_code> ProcessContextImpl::getRawDynamicProperty(const std::string_view name) const {
+std::expected<std::string, std::error_code> ProcessContextImpl::getRawDynamicProperty(const std::string_view name) const {
return getProcessor().getDynamicProperty(name);
}
-nonstd::expected<void, std::error_code> ProcessContextImpl::setDynamicProperty(std::string name, std::string value) {
+std::expected<void, std::error_code> ProcessContextImpl::setDynamicProperty(std::string name, std::string value) {
cached_dynamic_expressions_.erase(name);
return getProcessor().setDynamicProperty(std::move(name), std::move(value));
}
-[[nodiscard]] nonstd::expected<std::vector<std::string>, std::error_code> ProcessContextImpl::getAllPropertyValues(std::string_view name) const {
+[[nodiscard]] std::expected<std::vector<std::string>, std::error_code> ProcessContextImpl::getAllPropertyValues(std::string_view name) const {
return getProcessor().getAllPropertyValues(name);
}
diff --git a/libminifi/src/core/ProcessSession.cpp b/libminifi/src/core/ProcessSession.cpp
index 662f2b00e..a86f80e67 100644
--- a/libminifi/src/core/ProcessSession.cpp
+++ b/libminifi/src/core/ProcessSession.cpp
@@ -1041,12 +1041,12 @@ void ProcessSessionImpl::rollback() {
}
}
-nonstd::expected<void, std::string> ProcessSessionImpl::rollbackNoThrow() noexcept {
+std::expected<void, std::string> ProcessSessionImpl::rollbackNoThrow() noexcept {
try {
rollback();
return {};
} catch(const std::exception& exception) {
- return nonstd::make_unexpected(exception.what());
+ return std::unexpected{exception.what()};
} catch(...) {
logger_->log_critical("Caught unknown exception during rollback, type: {}, terminating", getCurrentExceptionTypeName());
std::terminate();
diff --git a/libminifi/src/core/state/nodes/ResponseNodeLoader.cpp b/libminifi/src/core/state/nodes/ResponseNodeLoader.cpp
index dc8f5211c..76a73f0b5 100644
--- a/libminifi/src/core/state/nodes/ResponseNodeLoader.cpp
+++ b/libminifi/src/core/state/nodes/ResponseNodeLoader.cpp
@@ -99,7 +99,7 @@ void ResponseNodeLoaderImpl::initializeComponentMetrics() {
}
}
-nonstd::expected<SharedResponseNode, std::string> ResponseNodeLoaderImpl::getSystemMetricsNode(const std::string& clazz) {
+std::expected<SharedResponseNode, std::string> ResponseNodeLoaderImpl::getSystemMetricsNode(const std::string& clazz) {
std::lock_guard<std::mutex> guard(system_metrics_mutex_);
if (system_metrics_.contains(clazz)) {
return system_metrics_.at(clazz);
@@ -108,7 +108,7 @@ nonstd::expected<SharedResponseNode, std::string> ResponseNodeLoaderImpl::getSys
std::shared_ptr ptr = core::ClassLoader::getDefaultClassLoader().instantiate(clazz, clazz);
auto response_node = std::dynamic_pointer_cast<ResponseNode>(ptr);
if (!response_node) {
- return nonstd::make_unexpected("Instantiated class '" + clazz + "' is not a ResponseNode!");
+ return std::unexpected{"Instantiated class '" + clazz + "' is not a ResponseNode!"};
}
system_metrics_.emplace(clazz, gsl::make_not_null(response_node));
return system_metrics_.at(clazz);
diff --git a/libminifi/src/sitetosite/SiteToSiteClient.cpp b/libminifi/src/sitetosite/SiteToSiteClient.cpp
index c5bd28850..8d934ac09 100644
--- a/libminifi/src/sitetosite/SiteToSiteClient.cpp
+++ b/libminifi/src/sitetosite/SiteToSiteClient.cpp
@@ -562,7 +562,7 @@ bool SiteToSiteClient::sendPacket(const DataPacket& packet) {
std::expected<void, std::string> SiteToSiteClient::readFlowFileHeaderData(io::InputStream& stream, const std::string& transaction_id_str, SiteToSiteClient::ReceiveFlowFileHeaderResult& result) {
uint32_t num_attributes = 0;
if (const auto ret = stream.read(num_attributes); ret == 0 || io::isError(ret) || num_attributes > MAX_NUM_ATTRIBUTES) {
- return std::unexpected(fmt::format("Site2Site failed to read number of attributes with return code {}, or number of attributes is invalid: {}", ret, num_attributes));
+ return std::unexpected{fmt::format("Site2Site failed to read number of attributes with return code {}, or number of attributes is invalid: {}", ret, num_attributes)};
}
logger_->log_debug("Site2Site transaction {} receives {} attributes", transaction_id_str, num_attributes);
@@ -570,11 +570,11 @@ std::expected<void, std::string> SiteToSiteClient::readFlowFileHeaderData(io::In
std::string key;
std::string value;
if (const auto ret = stream.read(key, true); ret == 0 || io::isError(ret)) {
- return std::unexpected(fmt::format("Site2Site transaction {} failed to read attribute key", transaction_id_str));
+ return std::unexpected{fmt::format("Site2Site transaction {} failed to read attribute key", transaction_id_str)};
}
if (const auto ret = stream.read(value, true); ret == 0 || io::isError(ret)) {
- return std::unexpected(fmt::format("Site2Site transaction {} failed to read attribute value for key {}", transaction_id_str, key));
+ return std::unexpected{fmt::format("Site2Site transaction {} failed to read attribute value for key {}", transaction_id_str, key)};
}
result.attributes[key] = value;
@@ -583,7 +583,7 @@ std::expected<void, std::string> SiteToSiteClient::readFlowFileHeaderData(io::In
uint64_t len = 0;
if (const auto ret = stream.read(len); ret == 0 || io::isError(ret)) {
- return std::unexpected(fmt::format("Site2Site transaction {} failed to read flow file data size", transaction_id_str));
+ return std::unexpected{fmt::format("Site2Site transaction {} failed to read flow file data size", transaction_id_str)};
}
result.flow_file_data_size = len;
@@ -596,16 +596,16 @@ std::expected<SiteToSiteClient::ReceiveFlowFileHeaderResult, std::string> SiteTo
}
if (peer_state_ != PeerState::READY) {
- return std::unexpected("Peer state is not ready");
+ return std::unexpected{"Peer state is not ready"};
}
const auto transaction_id_str = transaction->getUUIDStr();
if (transaction->getState() != TransactionState::TRANSACTION_STARTED && transaction->getState() != TransactionState::DATA_EXCHANGED) {
- return std::unexpected(fmt::format("Site2Site transaction {} is not at started or exchanged state", transaction_id_str));
+ return std::unexpected{fmt::format("Site2Site transaction {} is not at started or exchanged state", transaction_id_str)};
}
if (transaction->getDirection() != TransferDirection::RECEIVE) {
- return std::unexpected(fmt::format("Site2Site transaction {} direction is wrong", transaction_id_str));
+ return std::unexpected{fmt::format("Site2Site transaction {} direction is wrong", transaction_id_str)};
}
ReceiveFlowFileHeaderResult result;
@@ -618,7 +618,7 @@ std::expected<SiteToSiteClient::ReceiveFlowFileHeaderResult, std::string> SiteTo
// if we already have transferred a flow file before, check to see whether another one is available
auto response = readResponse(transaction);
if (!response) {
- return std::unexpected("Failed to read response");
+ return std::unexpected{"Failed to read response"};
}
if (response->code == ResponseCode::CONTINUE_TRANSACTION) {
logger_->log_debug("Site2Site transaction {} peer indicate continue transaction", transaction_id_str);
@@ -629,7 +629,7 @@ std::expected<SiteToSiteClient::ReceiveFlowFileHeaderResult, std::string> SiteTo
result.eof = true;
return result;
} else {
- return std::unexpected(fmt::format("Site2Site transaction {} peer indicate wrong response code {}", transaction_id_str, magic_enum::enum_underlying(response->code)));
+ return std::unexpected{fmt::format("Site2Site transaction {} peer indicate wrong response code {}", transaction_id_str, magic_enum::enum_underlying(response->code))};
}
}
@@ -640,7 +640,7 @@ std::expected<SiteToSiteClient::ReceiveFlowFileHeaderResult, std::string> SiteTo
}
if (auto ret = readFlowFileHeaderData(stream, transaction_id_str, result); !ret.has_value()) {
- return std::unexpected(fmt::format("Site2Site transaction {} failed to read flow file header data: {}", transaction_id_str, ret.error()));
+ return std::unexpected{fmt::format("Site2Site transaction {} failed to read flow file header data: {}", transaction_id_str, ret.error())};
}
if (result.flow_file_data_size > 0 || !result.attributes.empty()) {
diff --git a/libminifi/src/utils/file/AssetManager.cpp b/libminifi/src/utils/file/AssetManager.cpp
index dc1793033..73e4a11ff 100644
--- a/libminifi/src/utils/file/AssetManager.cpp
+++ b/libminifi/src/utils/file/AssetManager.cpp
@@ -119,9 +119,9 @@ std::string AssetManager::hash() const {
return state_.digest.empty() ? "null" : state_.digest;
}
-nonstd::expected<void, std::string> AssetManager::sync(
+std::expected<void, std::string> AssetManager::sync(
const AssetLayout& layout,
- const std::function<nonstd::expected<void, std::string>(std::string_view /*url*/, const std::filesystem::path& /*tmp_path*/)>& fetch) {
+ const std::function<std::expected<void, std::string>(std::string_view /*url*/, const std::filesystem::path& /*tmp_path*/)>& fetch) {
logger_->log_info("Synchronizing assets");
std::lock_guard lock(mtx_);
AssetLayout new_state{
@@ -182,7 +182,7 @@ nonstd::expected<void, std::string> AssetManager::sync(
persist();
if (!new_asset_errors.empty()) {
- return nonstd::make_unexpected(new_asset_errors);
+ return std::unexpected{new_asset_errors};
}
return {};
diff --git a/libminifi/test/libtest/unit/ProvenanceTestHelper.h b/libminifi/test/libtest/unit/ProvenanceTestHelper.h
index 4da9cea14..6b6d3cbae 100644
--- a/libminifi/test/libtest/unit/ProvenanceTestHelper.h
+++ b/libminifi/test/libtest/unit/ProvenanceTestHelper.h
@@ -46,6 +46,8 @@ class TestRepositoryBase : public T_BaseRepository {
: T_BaseRepository("repo_name", "./dir", 1s, TEST_MAX_REPOSITORY_STORAGE_SIZE, 0ms) {
}
+ virtual ~TestRepositoryBase() = default;
+
bool initialize(const std::shared_ptr<org::apache::nifi::minifi::Configure> &) override {
return true;
}
diff --git a/libminifi/test/unit/ExpectedTest.cpp b/libminifi/test/unit/ExpectedTest.cpp
index 978ce1cb6..11bc0e9ec 100644
--- a/libminifi/test/unit/ExpectedTest.cpp
+++ b/libminifi/test/unit/ExpectedTest.cpp
@@ -18,6 +18,7 @@
#define EXTENSION_LIST "" // NOLINT(cppcoreguidelines-macro-usage)
#include <memory>
#include <string_view>
+#include "fmt/std.h"
#include "unit/TestBase.h"
#include "unit/Catch.h"
#include "utils/expected.h"
@@ -34,129 +35,129 @@ TEST_CASE("expected transform", "[expected][transform]") {
auto ret_void = [](int) {};
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = e | utils::transform(mul2);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = e | utils::transform(mul2);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::transform(mul2);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::transform(mul2); // NOLINT(performance-move-const-arg)
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::transform(mul2);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::transform(mul2);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::transform(mul2);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::transform(mul2); // NOLINT(performance-move-const-arg)
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = e | utils::transform(ret_void);
REQUIRE(ret);
STATIC_REQUIRE(
- (std::is_same_v<decltype(ret), nonstd::expected<void, int>>));
+ (std::is_same_v<decltype(ret), std::expected<void, int>>));
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = e | utils::transform(ret_void);
REQUIRE(ret);
STATIC_REQUIRE(
- (std::is_same_v<decltype(ret), nonstd::expected<void, int>>));
+ (std::is_same_v<decltype(ret), std::expected<void, int>>));
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::transform(ret_void);
REQUIRE(ret);
STATIC_REQUIRE(
- (std::is_same_v<decltype(ret), nonstd::expected<void, int>>));
+ (std::is_same_v<decltype(ret), std::expected<void, int>>));
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::transform(ret_void); // NOLINT(performance-move-const-arg)
REQUIRE(ret);
STATIC_REQUIRE(
- (std::is_same_v<decltype(ret), nonstd::expected<void, int>>));
+ (std::is_same_v<decltype(ret), std::expected<void, int>>));
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::transform(ret_void);
REQUIRE(!ret);
STATIC_REQUIRE(
- (std::is_same_v<decltype(ret), nonstd::expected<void, int>>));
+ (std::is_same_v<decltype(ret), std::expected<void, int>>));
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::transform(ret_void);
REQUIRE(!ret);
STATIC_REQUIRE(
- (std::is_same_v<decltype(ret), nonstd::expected<void, int>>));
+ (std::is_same_v<decltype(ret), std::expected<void, int>>));
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::transform(ret_void);
REQUIRE(!ret);
STATIC_REQUIRE(
- (std::is_same_v<decltype(ret), nonstd::expected<void, int>>));
+ (std::is_same_v<decltype(ret), std::expected<void, int>>));
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::transform(ret_void); // NOLINT(performance-move-const-arg)
REQUIRE(!ret);
STATIC_REQUIRE(
- (std::is_same_v<decltype(ret), nonstd::expected<void, int>>));
+ (std::is_same_v<decltype(ret), std::expected<void, int>>));
}
// mapping functions which return references
{
- nonstd::expected<int, int> e(42);
+ std::expected<int, int> e(42);
auto ret = e | utils::transform([](int& i) -> int& { return i; });
REQUIRE(ret);
REQUIRE(*ret == 42);
@@ -164,116 +165,116 @@ TEST_CASE("expected transform", "[expected][transform]") {
}
TEST_CASE("expected andThen", "[expected][andThen]") {
- auto succeed = [](int) { return nonstd::expected<int, int>(21 * 2); };
- auto fail = [](int) { return nonstd::expected<int, int>(nonstd::unexpect, 17); };
+ auto succeed = [](int) { return std::expected<int, int>(21 * 2); };
+ auto fail = [](int) { return std::expected<int, int>(std::unexpect, 17); };
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = e | utils::andThen(succeed);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = e | utils::andThen(succeed);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::andThen(succeed);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::andThen(succeed); // NOLINT(performance-move-const-arg)
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = e | utils::andThen(fail);
REQUIRE(!ret);
REQUIRE(ret.error() == 17);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = e | utils::andThen(fail);
REQUIRE(!ret);
REQUIRE(ret.error() == 17);
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::andThen(fail);
REQUIRE(!ret);
REQUIRE(ret.error() == 17);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::andThen(fail); // NOLINT(performance-move-const-arg)
REQUIRE(!ret);
REQUIRE(ret.error() == 17);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::andThen(succeed);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::andThen(succeed);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::andThen(succeed);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::andThen(succeed); // NOLINT(performance-move-const-arg)
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::andThen(fail);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::andThen(fail);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::andThen(fail);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::andThen(fail); // NOLINT(performance-move-const-arg)
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
@@ -282,66 +283,66 @@ TEST_CASE("expected andThen", "[expected][andThen]") {
TEST_CASE("expected orElse", "[expected][orElse]") {
using eptr = std::unique_ptr<int>;
- auto succeed = [](int) { return nonstd::expected<int, int>(21 * 2); };
- auto succeedptr = [](eptr) { return nonstd::expected<int, eptr>(21*2); };
- auto fail = [](int) { return nonstd::expected<int, int>(nonstd::unexpect, 17); };
- auto efail = [](eptr e) { *e = 17; return nonstd::expected<int, eptr>(nonstd::unexpect, std::move(e)); };
+ auto succeed = [](int) { return std::expected<int, int>(21 * 2); };
+ auto succeedptr = [](eptr) { return std::expected<int, eptr>(21*2); };
+ auto fail = [](int) { return std::expected<int, int>(std::unexpect, 17); };
+ auto efail = [](eptr e) { *e = 17; return std::expected<int, eptr>(std::unexpect, std::move(e)); };
auto failvoid = [](int) {};
auto failvoidptr = [](const eptr&) { /* don't consume */};
auto consumeptr = [](eptr) {};
auto make_u_int = [](int n) { return std::make_unique<int>(n); };
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = e | utils::orElse(succeed);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = e | utils::orElse(succeed);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::orElse(succeed);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- nonstd::expected<int, eptr> e = 21;
+ std::expected<int, eptr> e = 21;
auto ret = std::move(e) | utils::orElse(succeedptr);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::orElse(succeed); // NOLINT(performance-move-const-arg)
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = e | utils::orElse(fail);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = e | utils::orElse(fail);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::orElse(fail);
REQUIRE(ret);
REQUIRE(*ret == 21);
@@ -349,119 +350,119 @@ TEST_CASE("expected orElse", "[expected][orElse]") {
{
- nonstd::expected<int, eptr> e = 21;
+ std::expected<int, eptr> e = 21;
auto ret = std::move(e) | utils::orElse(efail);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::orElse(fail); // NOLINT(performance-move-const-arg)
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::orElse(succeed);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::orElse(succeed);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::orElse(succeed);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- nonstd::expected<int, eptr> e(nonstd::unexpect, make_u_int(21));
+ std::expected<int, eptr> e(std::unexpect, make_u_int(21));
auto ret = std::move(e) | utils::orElse(succeedptr);
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::orElse(succeed); // NOLINT(performance-move-const-arg)
REQUIRE(ret);
REQUIRE(*ret == 42);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::orElse(fail);
REQUIRE(!ret);
REQUIRE(ret.error() == 17);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::orElse(failvoid);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::orElse(fail);
REQUIRE(!ret);
REQUIRE(ret.error() == 17);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = e | utils::orElse(failvoid);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::orElse(fail);
REQUIRE(!ret);
REQUIRE(ret.error() == 17);
}
{
- nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::orElse(failvoid);
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
}
{
- nonstd::expected<int, eptr> e(nonstd::unexpect, make_u_int(21));
+ std::expected<int, eptr> e(std::unexpect, make_u_int(21));
auto ret = std::move(e) | utils::orElse(failvoidptr);
REQUIRE(!ret);
REQUIRE(*ret.error() == 21);
}
{
- nonstd::expected<int, eptr> e(nonstd::unexpect, make_u_int(21));
+ std::expected<int, eptr> e(std::unexpect, make_u_int(21));
auto ret = std::move(e) | utils::orElse(consumeptr);
REQUIRE(!ret);
REQUIRE(ret.error() == nullptr);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::orElse(fail); // NOLINT(performance-move-const-arg)
REQUIRE(!ret);
REQUIRE(ret.error() == 17);
}
{
- const nonstd::expected<int, int> e(nonstd::unexpect, 21);
+ const std::expected<int, int> e(std::unexpect, 21);
auto ret = std::move(e) | utils::orElse(failvoid); // NOLINT(performance-move-const-arg)
REQUIRE(!ret);
REQUIRE(ret.error() == 21);
@@ -470,7 +471,7 @@ TEST_CASE("expected orElse", "[expected][orElse]") {
TEST_CASE("expected valueOrElse", "[expected][valueOrElse]") {
using namespace std::literals; // NOLINT
- nonstd::expected<int, std::string> ex{nonstd::unexpect, "hello"};
+ std::expected<int, std::string> ex{std::unexpect, "hello"};
REQUIRE(42 == (ex | utils::valueOrElse([] { return 42; })));
REQUIRE_THROWS_AS(ex | utils::valueOrElse([]{ throw std::exception(); }), std::exception);
REQUIRE(gsl::narrow<int>("hello"sv.size()) == (ex | utils::valueOrElse([](const std::string& err) { return gsl::narrow<int>(err.size()); })));
@@ -486,63 +487,63 @@ TEST_CASE("expected transformError", "[expected][transformError]") {
auto mul2 = [](int a) { return a * 2; };
{
- nonstd::expected<int, int> e = nonstd::make_unexpected(21);
+ std::expected<int, int> e = std::unexpected{21};
auto ret = e | utils::transformError(mul2);
REQUIRE(!ret);
REQUIRE(ret.error() == 42);
}
{
- nonstd::expected<size_t, std::string> e = nonstd::make_unexpected("sajt");
+ std::expected<size_t, std::string> e = std::unexpected{"sajt"};
auto ret = e | utils::transformError([](const std::string& error) -> size_t { return error.length(); });
REQUIRE(!ret);
REQUIRE(ret.error() == 4);
}
{
- const nonstd::expected<int, int> e = nonstd::make_unexpected(21);
+ const std::expected<int, int> e = std::unexpected{21};
auto ret = e | utils::transformError(mul2);
REQUIRE(!ret);
REQUIRE(ret.error() == 42);
}
{
- nonstd::expected<int, int> e = nonstd::make_unexpected(21);
+ std::expected<int, int> e = std::unexpected{21};
auto ret = std::move(e) | utils::transformError(mul2);
REQUIRE(!ret);
REQUIRE(ret.error() == 42);
}
{
- const nonstd::expected<int, int> e = nonstd::make_unexpected(21);
+ const std::expected<int, int> e = std::unexpected{21};
auto ret = std::move(e) | utils::transformError(mul2); // NOLINT(performance-move-const-arg)
REQUIRE(!ret);
REQUIRE(ret.error() == 42);
}
{
- nonstd::expected<int, int> e = 21;
+ std::expected<int, int> e = 21;
auto ret = e | utils::transformError(mul2);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = e | utils::transformError(mul2);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- const auto mutable_rvalue_fn = []{ return nonstd::expected<int, int>{21}; };
+ const auto mutable_rvalue_fn = []{ return std::expected<int, int>{21}; };
auto ret = mutable_rvalue_fn() | utils::transformError(mul2);
REQUIRE(ret);
REQUIRE(*ret == 21);
}
{
- const nonstd::expected<int, int> e = 21;
+ const std::expected<int, int> e = 21;
auto ret = std::move(e) | utils::transformError(mul2); // NOLINT(performance-move-const-arg)
REQUIRE(ret);
REQUIRE(*ret == 21);
@@ -550,8 +551,8 @@ TEST_CASE("expected transformError", "[expected][transformError]") {
}
TEST_CASE("expected toOptional") {
- nonstd::expected<int, std::string> unexpected{nonstd::unexpect, "hello"};
- nonstd::expected<int, std::string> expected{5};
+ std::expected<int, std::string> unexpected{std::unexpect, "hello"};
+ std::expected<int, std::string> expected{5};
std::optional<int> res1 = std::move(unexpected) | utils::toOptional();
std::optional<int> res2 = std::move(expected) | utils::toOptional();
@@ -561,8 +562,8 @@ TEST_CASE("expected toOptional") {
}
TEST_CASE("expected orThrow") {
- nonstd::expected<int, std::string> unexpected{nonstd::unexpect, "hello"};
- nonstd::expected<int, std::string> expected{5};
+ std::expected<int, std::string> unexpected{std::unexpect, "hello"};
+ std::expected<int, std::string> expected{5};
REQUIRE_THROWS_MATCHES(std::move(unexpected) | utils::orThrow("should throw"),
@@ -572,8 +573,8 @@ TEST_CASE("expected orThrow") {
}
TEST_CASE("This fails to compile with std::expected on GCC 15.1 due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119714") {
- nonstd::expected<int, std::string> a;
- nonstd::expected<int, std::string> b;
+ std::expected<int, std::string> a;
+ std::expected<int, std::string> b;
CHECK(a == b);
}
diff --git a/libminifi/test/unit/OptionalTest.cpp b/libminifi/test/unit/OptionalTest.cpp
index 570222311..9c332467c 100644
--- a/libminifi/test/unit/OptionalTest.cpp
+++ b/libminifi/test/unit/OptionalTest.cpp
@@ -82,10 +82,10 @@ TEST_CASE("optional toExpected") {
std::optional<int> opt_with_value = 5;
std::optional<int> opt_without_value = std::nullopt;
- nonstd::expected<int, std::error_code> expected_from_value_ec = opt_with_value | utils::toExpected(std::make_error_code(std::io_errc::stream));
- nonstd::expected<int, std::error_code> expected_from_null_opt_ec = opt_without_value | utils::toExpected(std::make_error_code(std::io_errc::stream));
- nonstd::expected<int, int> expected_from_value_int = opt_with_value | utils::toExpected(9);
- nonstd::expected<int, int> expected_from_null_opt_int = opt_without_value | utils::toExpected(9);
+ std::expected<int, std::error_code> expected_from_value_ec = opt_with_value | utils::toExpected(std::make_error_code(std::io_errc::stream));
+ std::expected<int, std::error_code> expected_from_null_opt_ec = opt_without_value | utils::toExpected(std::make_error_code(std::io_errc::stream));
+ std::expected<int, int> expected_from_value_int = opt_with_value | utils::toExpected(9);
+ std::expected<int, int> expected_from_null_opt_int = opt_without_value | utils::toExpected(9);
CHECK(expected_from_value_ec == 5);
CHECK(expected_from_value_int == 5);
diff --git a/libminifi/test/unit/ParsingUtilsTests.cpp b/libminifi/test/unit/ParsingUtilsTests.cpp
index 1783ccffb..ea5ad048a 100644
--- a/libminifi/test/unit/ParsingUtilsTests.cpp
+++ b/libminifi/test/unit/ParsingUtilsTests.cpp
@@ -32,26 +32,26 @@ TEST_CASE("Test boolean parsing") {
TEST_CASE("Test integral parsing") {
CHECK(8000U == parseIntegral<uint64_t>("8000"));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError) == parseIntegral<uint64_t>("8000 banana"));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError) == parseIntegral<uint64_t>("-8000"));
+ CHECK(std::unexpected{core::ParsingErrorCode::GeneralParsingError} == parseIntegral<uint64_t>("8000 banana"));
+ CHECK(std::unexpected{core::ParsingErrorCode::GeneralParsingError} == parseIntegral<uint64_t>("-8000"));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::LargerThanMaximum) == parseIntegralMinMax<uint64_t>("10", 3, 8));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::SmallerThanMinimum) == parseIntegralMinMax<uint64_t>("2", 3, 8));
+ CHECK(std::unexpected{core::ParsingErrorCode::LargerThanMaximum} == parseIntegralMinMax<uint64_t>("10", 3, 8));
+ CHECK(std::unexpected{core::ParsingErrorCode::SmallerThanMinimum} == parseIntegralMinMax<uint64_t>("2", 3, 8));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError) == parseIntegral<int16_t>("90000"));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError) == parseIntegral<int16_t>("-90000"));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError) == parseIntegral<int16_t>("8000 banana"));
+ CHECK(std::unexpected{core::ParsingErrorCode::GeneralParsingError} == parseIntegral<int16_t>("90000"));
+ CHECK(std::unexpected{core::ParsingErrorCode::GeneralParsingError} == parseIntegral<int16_t>("-90000"));
+ CHECK(std::unexpected{core::ParsingErrorCode::GeneralParsingError} == parseIntegral<int16_t>("8000 banana"));
}
TEST_CASE("Test data size parsing") {
CHECK(8000U == parseDataSize("8000"));
CHECK(8192000U == parseDataSize("8000 kB"));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::GeneralParsingError) == parseDataSize("8000 banana"));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::LargerThanMaximum) == parseDataSizeMinMax("9 MB", 3000, 8000));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::SmallerThanMinimum) == parseDataSizeMinMax("0 GB", 3000, 8000));
- CHECK(nonstd::make_unexpected(core::ParsingErrorCode::OverflowError) == parseDataSize("20000 PB"));
+ CHECK(std::unexpected{core::ParsingErrorCode::GeneralParsingError} == parseDataSize("8000 banana"));
+ CHECK(std::unexpected{core::ParsingErrorCode::LargerThanMaximum} == parseDataSizeMinMax("9 MB", 3000, 8000));
+ CHECK(std::unexpected{core::ParsingErrorCode::SmallerThanMinimum} == parseDataSizeMinMax("0 GB", 3000, 8000));
+ CHECK(std::unexpected{core::ParsingErrorCode::OverflowError} == parseDataSize("20000 PB"));
}
TEST_CASE("Test Permissions Parsing") {
diff --git a/minifi-api/common/include/minifi-cpp/io/StreamCallback.h b/minifi-api/common/include/minifi-cpp/io/StreamCallback.h
index 7063c7146..ec4fcf59e 100644
--- a/minifi-api/common/include/minifi-cpp/io/StreamCallback.h
+++ b/minifi-api/common/include/minifi-cpp/io/StreamCallback.h
@@ -40,8 +40,8 @@ class IoResult {
virtual ~IoResult() = default;
- static IoResult error() { return IoResult(nonstd::make_unexpected(MINIFI_IO_ERROR)); }
- static IoResult cancelled() { return IoResult(nonstd::make_unexpected(MINIFI_IO_CANCEL)); }
+ static IoResult error() { return IoResult(std::unexpected{MINIFI_IO_ERROR}); }
+ static IoResult cancelled() { return IoResult(std::unexpected{MINIFI_IO_CANCEL}); }
static IoResult zero() { return IoResult(0U); }
template <typename T>
@@ -51,7 +51,7 @@ class IoResult {
if constexpr (std::is_same_v<T, int64_t>) {
if (val < 0) {
- return IoResult(nonstd::make_unexpected(static_cast<MinifiIoStatus>(val)));
+ return IoResult(std::unexpected{static_cast<MinifiIoStatus>(val)});
}
} else if constexpr (std::is_same_v<T, size_t>) {
if (isError(val)) {
@@ -75,12 +75,12 @@ class IoResult {
uint64_t operator*() const { return *result_; }
- nonstd::expected<uint64_t, MinifiIoStatus> inner() const { return result_; }
+ std::expected<uint64_t, MinifiIoStatus> inner() const { return result_; }
private:
- explicit IoResult(nonstd::expected<uint64_t, MinifiIoStatus> result) : result_(std::move(result)) {}
+ explicit IoResult(std::expected<uint64_t, MinifiIoStatus> result) : result_(std::move(result)) {}
- nonstd::expected<uint64_t, MinifiIoStatus> result_;
+ std::expected<uint64_t, MinifiIoStatus> result_;
};
class ReadWriteResult {
@@ -95,8 +95,8 @@ class ReadWriteResult {
: result_(ReadWrite{.bytes_read = bytes_read, .bytes_written = bytes_written}) {}
static ReadWriteResult zero() { return ReadWriteResult(ReadWrite{.bytes_read = 0, .bytes_written = 0}); };
- static ReadWriteResult error() { return ReadWriteResult(nonstd::make_unexpected(MINIFI_IO_ERROR)); }
- static ReadWriteResult cancelled() { return ReadWriteResult(nonstd::make_unexpected(MINIFI_IO_CANCEL)); }
+ static ReadWriteResult error() { return ReadWriteResult(std::unexpected{MINIFI_IO_ERROR}); }
+ static ReadWriteResult cancelled() { return ReadWriteResult(std::unexpected{MINIFI_IO_CANCEL}); }
virtual ~ReadWriteResult() = default;
@@ -111,9 +111,9 @@ class ReadWriteResult {
uint64_t bytes_read;
uint64_t bytes_written;
};
- explicit ReadWriteResult(nonstd::expected<ReadWrite, MinifiIoStatus> result) : result_(std::move(result)) {}
+ explicit ReadWriteResult(std::expected<ReadWrite, MinifiIoStatus> result) : result_(std::move(result)) {}
- nonstd::expected<ReadWrite, MinifiIoStatus> result_;
+ std::expected<ReadWrite, MinifiIoStatus> result_;
};
using OutputStreamCallback = std::function<IoResult(const std::shared_ptr<OutputStream>& output_stream)>;
diff --git a/minifi-api/include/minifi-cpp/controllers/RecordSetReader.h b/minifi-api/include/minifi-cpp/controllers/RecordSetReader.h
index db7c26737..536491272 100644
--- a/minifi-api/include/minifi-cpp/controllers/RecordSetReader.h
+++ b/minifi-api/include/minifi-cpp/controllers/RecordSetReader.h
@@ -35,7 +35,7 @@ class RecordSetReader : public controller::ControllerServiceHandle {
.version = MINIFI_VERSION_STR
};
- virtual nonstd::expected<RecordSet, std::error_code> read(io::InputStream& input_stream) = 0;
+ virtual std::expected<RecordSet, std::error_code> read(io::InputStream& input_stream) = 0;
};
} // namespace org::apache::nifi::minifi::core
diff --git a/minifi-api/include/minifi-cpp/core/ConfigurableComponent.h b/minifi-api/include/minifi-cpp/core/ConfigurableComponent.h
index 1c9196a9e..377903754 100644
--- a/minifi-api/include/minifi-cpp/core/ConfigurableComponent.h
+++ b/minifi-api/include/minifi-cpp/core/ConfigurableComponent.h
@@ -35,26 +35,26 @@ class ConfigurableComponent : public virtual CoreComponent {
virtual void initialize() {};
virtual bool canEdit() = 0;
- [[nodiscard]] virtual nonstd::expected<std::string, std::error_code> getProperty(std::string_view name) const = 0;
- virtual nonstd::expected<void, std::error_code> setProperty(std::string_view name, std::string value) = 0;
- virtual nonstd::expected<void, std::error_code> appendProperty(std::string_view name, std::string value) = 0;
- virtual nonstd::expected<void, std::error_code> clearProperty(std::string_view name) = 0;
+ [[nodiscard]] virtual std::expected<std::string, std::error_code> getProperty(std::string_view name) const = 0;
+ virtual std::expected<void, std::error_code> setProperty(std::string_view name, std::string value) = 0;
+ virtual std::expected<void, std::error_code> appendProperty(std::string_view name, std::string value) = 0;
+ virtual std::expected<void, std::error_code> clearProperty(std::string_view name) = 0;
- [[nodiscard]] virtual nonstd::expected<std::string, std::error_code> getDynamicProperty(std::string_view name) const = 0;
- virtual nonstd::expected<void, std::error_code> setDynamicProperty(std::string name, std::string value) = 0;
- virtual nonstd::expected<void, std::error_code> appendDynamicProperty(std::string_view name, std::string value) = 0;
+ [[nodiscard]] virtual std::expected<std::string, std::error_code> getDynamicProperty(std::string_view name) const = 0;
+ virtual std::expected<void, std::error_code> setDynamicProperty(std::string name, std::string value) = 0;
+ virtual std::expected<void, std::error_code> appendDynamicProperty(std::string_view name, std::string value) = 0;
[[nodiscard]] virtual std::vector<std::string> getDynamicPropertyKeys() const = 0;
[[nodiscard]] virtual std::map<std::string, std::string> getDynamicProperties() const = 0;
- [[nodiscard]] virtual nonstd::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const = 0;
- [[nodiscard]] virtual nonstd::expected<std::vector<std::string>, std::error_code> getAllDynamicPropertyValues(std::string_view name) const = 0;
+ [[nodiscard]] virtual std::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const = 0;
+ [[nodiscard]] virtual std::expected<std::vector<std::string>, std::error_code> getAllDynamicPropertyValues(std::string_view name) const = 0;
[[nodiscard]] virtual bool supportsDynamicProperties() const = 0;
[[nodiscard]] virtual bool supportsDynamicRelationships() const = 0;
[[nodiscard]] virtual std::map<std::string, Property, std::less<>> getSupportedProperties() const = 0;
- [[nodiscard]] virtual nonstd::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const = 0;
+ [[nodiscard]] virtual std::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const = 0;
};
} // namespace org::apache::nifi::minifi::core
diff --git a/minifi-api/include/minifi-cpp/core/ProcessContext.h b/minifi-api/include/minifi-cpp/core/ProcessContext.h
index cc5ec9e5d..6fa663a7a 100644
--- a/minifi-api/include/minifi-cpp/core/ProcessContext.h
+++ b/minifi-api/include/minifi-cpp/core/ProcessContext.h
@@ -38,7 +38,7 @@ class ProcessorInfo {
[[nodiscard]] virtual utils::Identifier getUUID() const = 0;
[[nodiscard]] virtual std::shared_ptr<state::FlowIdentifier> getFlowIdentifier() const = 0;
[[nodiscard]] virtual std::map<std::string, core::Property, std::less<>> getSupportedProperties() const = 0;
- [[nodiscard]] virtual nonstd::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const = 0;
+ [[nodiscard]] virtual std::expected<Property, std::error_code> getSupportedProperty(std::string_view name) const = 0;
virtual ~ProcessorInfo() = default;
};
@@ -50,29 +50,29 @@ class ProcessContext : public virtual core::VariableRegistry, public virtual uti
virtual const ProcessorInfo& getProcessorInfo() const = 0;
virtual Processor& getProcessor() const = 0;
- virtual nonstd::expected<std::string, std::error_code> getProperty(std::string_view name, const FlowFile* flow_file = nullptr) const = 0;
- nonstd::expected<std::string, std::error_code> getProperty(const Property& property, const FlowFile* flow_file = nullptr) const { return getProperty(property.getName(), flow_file); }
- nonstd::expected<std::string, std::error_code> getProperty(const PropertyReference& property_reference, const FlowFile* flow_file = nullptr) const {
+ virtual std::expected<std::string, std::error_code> getProperty(std::string_view name, const FlowFile* flow_file = nullptr) const = 0;
+ std::expected<std::string, std::error_code> getProperty(const Property& property, const FlowFile* flow_file = nullptr) const { return getProperty(property.getName(), flow_file); }
+ std::expected<std::string, std::error_code> getProperty(const PropertyReference& property_reference, const FlowFile* flow_file = nullptr) const {
return getProperty(property_reference.name, flow_file);
}
- virtual nonstd::expected<std::string, std::error_code> getRawProperty(std::string_view name) const = 0;
+ virtual std::expected<std::string, std::error_code> getRawProperty(std::string_view name) const = 0;
- virtual nonstd::expected<void, std::error_code> setProperty(std::string_view name, std::string value) = 0;
- nonstd::expected<void, std::error_code> setProperty(const Property& property, std::string value) { return setProperty(property.getName(), std::move(value)); };
- nonstd::expected<void, std::error_code> setProperty(const PropertyReference& property_reference, std::string value) { return setProperty(property_reference.name, std::move(value)); };
+ virtual std::expected<void, std::error_code> setProperty(std::string_view name, std::string value) = 0;
+ std::expected<void, std::error_code> setProperty(const Property& property, std::string value) { return setProperty(property.getName(), std::move(value)); };
+ std::expected<void, std::error_code> setProperty(const PropertyReference& property_reference, std::string value) { return setProperty(property_reference.name, std::move(value)); };
- virtual nonstd::expected<void, std::error_code> clearProperty(std::string_view name) = 0;
+ virtual std::expected<void, std::error_code> clearProperty(std::string_view name) = 0;
- virtual nonstd::expected<std::string, std::error_code> getDynamicProperty(std::string_view name, const FlowFile* flow_file = nullptr) const = 0;
- virtual nonstd::expected<void, std::error_code> setDynamicProperty(std::string name, std::string value) = 0;
+ virtual std::expected<std::string, std::error_code> getDynamicProperty(std::string_view name, const FlowFile* flow_file = nullptr) const = 0;
+ virtual std::expected<void, std::error_code> setDynamicProperty(std::string name, std::string value) = 0;
- virtual nonstd::expected<std::string, std::error_code> getRawDynamicProperty(std::string_view name) const = 0;
+ virtual std::expected<std::string, std::error_code> getRawDynamicProperty(std::string_view name) const = 0;
virtual std::vector<std::string> getDynamicPropertyKeys() const = 0;
virtual std::map<std::string, std::string> getDynamicProperties(const FlowFile* flow_file = nullptr) const = 0;
- [[nodiscard]] virtual nonstd::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const = 0;
+ [[nodiscard]] virtual std::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const = 0;
virtual void addAutoTerminatedRelationship(const core::Relationship& relationship) = 0;
diff --git a/minifi-api/include/minifi-cpp/core/ProcessSession.h b/minifi-api/include/minifi-cpp/core/ProcessSession.h
index d751515a0..5b77d8422 100644
--- a/minifi-api/include/minifi-cpp/core/ProcessSession.h
+++ b/minifi-api/include/minifi-cpp/core/ProcessSession.h
@@ -44,7 +44,7 @@ class ProcessSession : public virtual ReferenceContainer {
virtual void commit() = 0;
virtual void rollback() = 0;
- virtual nonstd::expected<void, std::string> rollbackNoThrow() noexcept = 0;
+ virtual std::expected<void, std::string> rollbackNoThrow() noexcept = 0;
virtual std::shared_ptr<provenance::ProvenanceReporter> getProvenanceReporter() = 0;
virtual void flushContent() = 0;
virtual std::shared_ptr<core::FlowFile> get() = 0;
diff --git a/minifi-api/include/minifi-cpp/core/Property.h b/minifi-api/include/minifi-cpp/core/Property.h
index 8d1225494..d802b7221 100644
--- a/minifi-api/include/minifi-cpp/core/Property.h
+++ b/minifi-api/include/minifi-cpp/core/Property.h
@@ -61,10 +61,10 @@ class Property final {
std::vector<std::string> getAllowedTypes() const;
std::string getDescription() const;
const PropertyValidator& getValidator() const;
- [[nodiscard]] nonstd::expected<std::span<const std::string>, std::error_code> getAllValues() const;
- [[nodiscard]] nonstd::expected<std::string_view, std::error_code> getValue() const;
- nonstd::expected<void, std::error_code> setValue(std::string value);
- nonstd::expected<void, std::error_code> appendValue(std::string value);
+ [[nodiscard]] std::expected<std::span<const std::string>, std::error_code> getAllValues() const;
+ [[nodiscard]] std::expected<std::string_view, std::error_code> getValue() const;
+ std::expected<void, std::error_code> setValue(std::string value);
+ std::expected<void, std::error_code> appendValue(std::string value);
void clearValues();
bool getRequired() const;
bool isSensitive() const;
diff --git a/minifi-api/include/minifi-cpp/core/controller/ControllerServiceContext.h b/minifi-api/include/minifi-cpp/core/controller/ControllerServiceContext.h
index ee906e856..843034fde 100644
--- a/minifi-api/include/minifi-cpp/core/controller/ControllerServiceContext.h
+++ b/minifi-api/include/minifi-cpp/core/controller/ControllerServiceContext.h
@@ -28,8 +28,8 @@ class ControllerServiceContext {
public:
virtual ~ControllerServiceContext() = default;
- [[nodiscard]] virtual nonstd::expected<std::string, std::error_code> getProperty(std::string_view name) const = 0;
- [[nodiscard]] virtual nonstd::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const = 0;
+ [[nodiscard]] virtual std::expected<std::string, std::error_code> getProperty(std::string_view name) const = 0;
+ [[nodiscard]] virtual std::expected<std::vector<std::string>, std::error_code> getAllPropertyValues(std::string_view name) const = 0;
};
} // namespace org::apache::nifi::minifi::core::controller
diff --git a/thirdparty/bustache/remove_installs.patch b/thirdparty/bustache/remove_installs.patch
new file mode 100644
index 000000000..af6eb5ec7
--- /dev/null
+++ b/thirdparty/bustache/remove_installs.patch
@@ -0,0 +1,49 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index efb1cbc..b1f2e71 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -58,43 +58,7 @@ add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
+
+ include(GNUInstallDirs)
+
+-# Install the library and headers.
+-install(
+- TARGETS
+- ${PROJECT_NAME}
+- EXPORT
+- ${PROJECT_NAME}-targets
+- LIBRARY DESTINATION
+- ${CMAKE_INSTALL_LIBDIR}
+- RUNTIME DESTINATION
+- ${CMAKE_INSTALL_BINDIR}
+- ARCHIVE DESTINATION
+- ${CMAKE_INSTALL_LIBDIR}
+- INCLUDES DESTINATION
+- include
+- PUBLIC_HEADER DESTINATION
+- include
+-)
+-
+-# Install version, config and target files.
+-install(
+- EXPORT
+- ${PROJECT_NAME}-targets
+- FILE
+- ${PROJECT_NAME}-targets.cmake
+- NAMESPACE
+- ${PROJECT_NAME}::
+- DESTINATION
+- ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+-)
+-
+-# Install the `include` directory
+-install(
+- DIRECTORY
+- include/${PROJECT_NAME}
+- DESTINATION
+- include
+-)
++# removed installs
+
+ # Quick `config-version.cmake` creation
+ include(CMakePackageConfigHelpers)
diff --git a/thirdparty/couchbase/remove-debug-symbols.patch b/thirdparty/couchbase/remove-debug-symbols.patch
deleted file mode 100644
index bc7e4052e..000000000
--- a/thirdparty/couchbase/remove-debug-symbols.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 6c69b32..497e2f6 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -58,7 +58,6 @@ include(cmake/Sanitizers.cmake)
- # allow for static analysis options
- include(cmake/StaticAnalyzers.cmake)
-
--include(cmake/Backtrace.cmake)
- enable_sanitizers(project_options)
-
- if(COUCHBASE_CXX_CLIENT_MASTER_PROJECT)
diff --git a/thirdparty/couchbase/remove-thirdparty-1.0.2.patch b/thirdparty/couchbase/remove-thirdparty-1.0.2.patch
deleted file mode 100644
index 732576f14..000000000
--- a/thirdparty/couchbase/remove-thirdparty-1.0.2.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-diff --git a/cmake/ThirdPartyDependencies.cmake b/cmake/ThirdPartyDependencies.cmake
-index f02af02..f83c181 100644
---- a/cmake/ThirdPartyDependencies.cmake
-+++ b/cmake/ThirdPartyDependencies.cmake
-@@ -3,73 +3,30 @@
- include(cmake/CPM.cmake)
-
- # https://cmake.org/cmake/help/v3.28/policy/CMP0063.html
- set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
-
- function(declare_system_library target)
- message(STATUS "Declaring system library ${target}")
- get_target_property(target_aliased_name ${target} ALIASED_TARGET)
- if(target_aliased_name)
- set(target ${target_aliased_name})
- endif()
- set_target_properties(${target} PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
- $<TARGET_PROPERTY:${target},INTERFACE_INCLUDE_DIRECTORIES>)
- endfunction()
-
--if(NOT TARGET fmt::fmt)
-- # https://github.com/fmtlib/fmt/releases
-- cpmaddpackage(
-- NAME
-- fmt
-- GIT_TAG
-- 11.0.1
-- VERSION
-- 11.0.1
-- GITHUB_REPOSITORY
-- "fmtlib/fmt"
-- EXCLUDE_FROM_ALL ON
-- OPTIONS
-- "FMT_INSTALL OFF"
-- # Unicode support for MSVC enabled in CompilerWarnings.cmake
-- "FMT_UNICODE OFF"
-- "FMT_DOC OFF"
-- "BUILD_SHARED_LIBS OFF"
-- "CMAKE_C_VISIBILITY_PRESET hidden"
-- "CMAKE_CXX_VISIBILITY_PRESET hidden"
-- "CMAKE_POSITION_INDEPENDENT_CODE ON")
--endif()
--
--if(NOT TARGET spdlog::spdlog)
-- # https://github.com/gabime/spdlog/releases
-- cpmaddpackage(
-- NAME
-- spdlog
-- VERSION
-- 1.14.1
-- GITHUB_REPOSITORY
-- "gabime/spdlog"
-- EXCLUDE_FROM_ALL ON
-- OPTIONS
-- "SPDLOG_INSTALL OFF"
-- "BUILD_SHARED_LIBS OFF"
-- "CMAKE_C_VISIBILITY_PRESET hidden"
-- "CMAKE_CXX_VISIBILITY_PRESET hidden"
-- "CMAKE_POSITION_INDEPENDENT_CODE ON"
-- "SPDLOG_BUILD_SHARED OFF"
-- "SPDLOG_FMT_EXTERNAL ON")
--endif()
--
- if(NOT TARGET Microsoft.GSL::GSL)
- # https://github.com/microsoft/GSL/releases
- cpmaddpackage(
- NAME
- gsl
- VERSION
- 4.0.0
- GITHUB_REPOSITORY
- "microsoft/gsl"
- EXCLUDE_FROM_ALL ON
- OPTIONS
- "GSL_INSTALL OFF"
- "CMAKE_C_VISIBILITY_PRESET hidden"
- "CMAKE_CXX_VISIBILITY_PRESET hidden"
- "CMAKE_POSITION_INDEPENDENT_CODE ON")
-@@ -159,93 +116,24 @@ if(NOT TARGET taocpp::json)
- "CMAKE_POSITION_INDEPENDENT_CODE ON"
- "BUILD_SHARED_LIBS OFF"
- "PEGTL_INSTALL ${COUCHBASE_CXX_CLIENT_INSTALL}"
- "PEGTL_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/pegtl"
- "PEGTL_INSTALL_DOC_DIR ${CMAKE_INSTALL_DATAROOTDIR}/doc/tao/pegtl"
- "PEGTL_BUILD_TESTS OFF"
- "PEGTL_BUILD_EXAMPLES OFF"
- "PEGTL_USE_BOOST_FILESYSTEM OFF"
- "TAOCPP_JSON_INSTALL ${COUCHBASE_CXX_CLIENT_INSTALL}"
- "TAOCPP_JSON_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/taocpp-json"
- "TAOCPP_JSON_INSTALL_DOC_DIR ${CMAKE_INSTALL_DATAROOTDIR}/doc/tao/json"
- "TAOCPP_JSON_BUILD_TESTS OFF"
- "TAOCPP_JSON_BUILD_EXAMPLES OFF")
- endif()
-
--
--if(NOT TARGET asio::asio)
-- # https://github.com/chriskohlhoff/asio/tags
-- cpmaddpackage(
-- NAME
-- asio
-- GIT_TAG
-- asio-1-31-0
-- VERSION
-- 1.31.0
-- GITHUB_REPOSITORY
-- "chriskohlhoff/asio"
-- EXCLUDE_FROM_ALL ON)
--endif()
--
--# ASIO doesn't use CMake, we have to configure it manually. Extra notes for using on Windows:
--#
--# 1) If _WIN32_WINNT is not set, ASIO assumes _WIN32_WINNT=0x0501, i.e. Windows XP target, which is definitely not the
--# platform which most users target.
--#
--# 2) WIN32_LEAN_AND_MEAN is defined to make Winsock2 work.
--if(asio_ADDED)
-- add_library(asio STATIC ${asio_SOURCE_DIR}/asio/src/asio.cpp ${asio_SOURCE_DIR}/asio/src/asio_ssl.cpp)
--
-- target_include_directories(asio SYSTEM PUBLIC ${asio_SOURCE_DIR}/asio/include)
-- target_compile_definitions(asio PRIVATE ASIO_STANDALONE=1 ASIO_NO_DEPRECATED=1 ASIO_SEPARATE_COMPILATION=1)
-- target_link_libraries(asio PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto)
-- set_target_properties(
-- asio
-- PROPERTIES C_VISIBILITY_PRESET hidden
-- CXX_VISIBILITY_PRESET hidden
-- POSITION_INDEPENDENT_CODE TRUE)
--
-- if(WIN32)
-- # macro see @ https://stackoverflow.com/a/40217291/1746503
-- macro(get_win32_winnt version)
-- if(CMAKE_SYSTEM_VERSION)
-- set(ver ${CMAKE_SYSTEM_VERSION})
-- string(REGEX MATCH "^([0-9]+).([0-9])" ver ${ver})
-- string(REGEX MATCH "^([0-9]+)" verMajor ${ver})
-- # Check for Windows 10, b/c we'll need to convert to hex 'A'.
-- if("${verMajor}" MATCHES "10")
-- set(verMajor "A")
-- string(REGEX REPLACE "^([0-9]+)" ${verMajor} ver ${ver})
-- endif("${verMajor}" MATCHES "10")
-- # Remove all remaining '.' characters.
-- string(REPLACE "." "" ver ${ver})
-- # Prepend each digit with a zero.
-- string(REGEX REPLACE "([0-9A-Z])" "0\\1" ver ${ver})
-- set(${version} "0x${ver}")
-- endif()
-- endmacro()
--
-- if(NOT DEFINED _WIN32_WINNT)
-- get_win32_winnt(ver)
-- set(_WIN32_WINNT ${ver})
-- endif()
--
-- message(STATUS "Set _WIN32_WINNT=${_WIN32_WINNT}")
--
-- target_compile_definitions(asio INTERFACE _WIN32_WINNT=${_WIN32_WINNT} WIN32_LEAN_AND_MEAN)
-- endif()
--
-- add_library(asio::asio ALIAS asio)
--endif()
--
- add_library(jsonsl OBJECT ${PROJECT_SOURCE_DIR}/third_party/jsonsl/jsonsl.c)
- set_target_properties(jsonsl PROPERTIES C_VISIBILITY_PRESET hidden POSITION_INDEPENDENT_CODE TRUE)
- target_include_directories(jsonsl SYSTEM PUBLIC ${PROJECT_SOURCE_DIR}/third_party/jsonsl)
-
- declare_system_library(snappy)
- declare_system_library(llhttp::llhttp)
- declare_system_library(hdr_histogram_static)
- declare_system_library(Microsoft.GSL::GSL)
--declare_system_library(spdlog::spdlog)
--declare_system_library(fmt::fmt)
--declare_system_library(asio)
- declare_system_library(taocpp::json)
diff --git a/thirdparty/couchbase/remove-thirdparty.patch b/thirdparty/couchbase/remove-thirdparty.patch
index 942e5fc27..13a97b409 100644
--- a/thirdparty/couchbase/remove-thirdparty.patch
+++ b/thirdparty/couchbase/remove-thirdparty.patch
@@ -1,27 +1,17 @@
+Subject: [PATCH] removed spdlog and asio thirdparty libs (since we already provide those)
+---
+Index: cmake/ThirdPartyDependencies.cmake
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
diff --git a/cmake/ThirdPartyDependencies.cmake b/cmake/ThirdPartyDependencies.cmake
-index af373ce..30cf2b6 100644
---- a/cmake/ThirdPartyDependencies.cmake
-+++ b/cmake/ThirdPartyDependencies.cmake
-@@ -1,232 +1,141 @@
- # NOTE: This file MUST be in sync with couchbase-sdk-cxx-black-duck-manifest.yaml
-
- include(cmake/CPM.cmake)
-
- set(CPM_USE_LOCAL_PACKAGES OFF)
-
- # https://cmake.org/cmake/help/v3.28/policy/CMP0063.html
- set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
-
- function(declare_system_library target)
- message(STATUS "Declaring system library ${target}")
- get_target_property(target_aliased_name ${target} ALIASED_TARGET)
- if(target_aliased_name)
- set(target ${target_aliased_name})
- endif()
- set_target_properties(${target} PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
- $<TARGET_PROPERTY:${target},INTERFACE_INCLUDE_DIRECTORIES>)
- endfunction()
-
+--- a/cmake/ThirdPartyDependencies.cmake (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/cmake/ThirdPartyDependencies.cmake (date 1776166918688)
+@@ -18,27 +18,6 @@
+
+ include(cmake/OpenSSL.cmake)
+
-if(NOT TARGET spdlog::spdlog)
- # https://github.com/gabime/spdlog/releases
- cpmaddpackage(
@@ -32,145 +22,37 @@ index af373ce..30cf2b6 100644
- GITHUB_REPOSITORY
- "gabime/spdlog"
- EXCLUDE_FROM_ALL ON
+- SYSTEM NO
- OPTIONS
- "SPDLOG_INSTALL OFF"
- "BUILD_SHARED_LIBS OFF"
- "CMAKE_C_VISIBILITY_PRESET hidden"
- "CMAKE_CXX_VISIBILITY_PRESET hidden"
- "CMAKE_POSITION_INDEPENDENT_CODE ON"
-- "NO_CMAKE_SYSTEM_PATH ON"
-- "NO_CMAKE_INSTALL_PREFIX ON"
-- "NO_CMAKE_SYSTEM_PACKAGE_REGISTRY ON"
- "SPDLOG_BUILD_SHARED OFF"
- "SPDLOG_FMT_EXTERNAL OFF")
-endif()
-
- if(NOT TARGET Microsoft.GSL::GSL)
- # https://github.com/microsoft/GSL/releases
- cpmaddpackage(
- NAME
- gsl
- VERSION
- 4.0.0
- GITHUB_REPOSITORY
- "microsoft/gsl"
- EXCLUDE_FROM_ALL ON
- OPTIONS
- "GSL_INSTALL OFF"
- "CMAKE_C_VISIBILITY_PRESET hidden"
- "CMAKE_CXX_VISIBILITY_PRESET hidden"
- "CMAKE_POSITION_INDEPENDENT_CODE ON")
- endif()
-
- if(NOT TARGET hdr_histogram_static)
- # https://github.com/HdrHistogram/HdrHistogram_c/releases
- cpmaddpackage(
- NAME
- hdr_histogram
- GIT_TAG
- 0.11.8
- VERSION
- 0.11.8
- GITHUB_REPOSITORY
- "HdrHistogram/HdrHistogram_c"
- EXCLUDE_FROM_ALL ON
- OPTIONS
- "CMAKE_C_VISIBILITY_PRESET hidden"
- "CMAKE_CXX_VISIBILITY_PRESET hidden"
- "CMAKE_POSITION_INDEPENDENT_CODE ON"
- "HDR_LOG_REQUIRED OFF"
- "HDR_HISTOGRAM_BUILD_SHARED OFF"
- "HDR_HISTOGRAM_BUILD_PROGRAMS OFF")
- endif()
-
- if(NOT TARGET llhttp::llhttp)
- # https://github.com/nodejs/llhttp/releases
- cpmaddpackage(
- NAME
- llhttp
- GIT_TAG
- release/v9.2.1
- VERSION
- 9.2.1
- GITHUB_REPOSITORY
- "nodejs/llhttp"
- EXCLUDE_FROM_ALL ON
- OPTIONS
- "CMAKE_C_VISIBILITY_PRESET hidden"
- "CMAKE_CXX_VISIBILITY_PRESET hidden"
- "CMAKE_POSITION_INDEPENDENT_CODE ON"
- "BUILD_SHARED_LIBS OFF"
- "BUILD_STATIC_LIBS ON")
- endif()
-
- if(NOT TARGET snappy)
- # https://github.com/google/snappy/releases
- cpmaddpackage(
- NAME
- snappy
- GIT_TAG
- 1.2.2
- VERSION
- 1.2.2
- GITHUB_REPOSITORY
- "google/snappy"
- EXCLUDE_FROM_ALL ON
- OPTIONS
- "SNAPPY_INSTALL OFF"
- "CMAKE_C_VISIBILITY_PRESET hidden"
- "CMAKE_CXX_VISIBILITY_PRESET hidden"
- "CMAKE_POSITION_INDEPENDENT_CODE ON"
- "BUILD_SHARED_LIBS OFF"
- "SNAPPY_BUILD_TESTS OFF"
- "SNAPPY_BUILD_BENCHMARKS OFF")
- endif()
- if(NOT MSVC)
- # https://github.com/google/snappy/pull/156
- target_compile_options(snappy PRIVATE -Wno-sign-compare)
- endif()
-
- if(NOT TARGET taocpp::json)
- # https://github.com/taocpp/json/releases
- cpmaddpackage(
- NAME
- json
- GIT_TAG
- 1.0.0-beta.14
- VERSION
- 1.0.0-beta.14
- GITHUB_REPOSITORY
- "taocpp/json"
- OPTIONS
- "CMAKE_C_VISIBILITY_PRESET hidden"
- "CMAKE_CXX_VISIBILITY_PRESET hidden"
- "CMAKE_POSITION_INDEPENDENT_CODE ON"
- "BUILD_SHARED_LIBS OFF"
- "PEGTL_INSTALL ${COUCHBASE_CXX_CLIENT_INSTALL}"
- "PEGTL_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/pegtl"
- "PEGTL_INSTALL_DOC_DIR ${CMAKE_INSTALL_DATAROOTDIR}/doc/tao/pegtl"
- "PEGTL_BUILD_TESTS OFF"
- "PEGTL_BUILD_EXAMPLES OFF"
- "PEGTL_USE_BOOST_FILESYSTEM OFF"
- "TAOCPP_JSON_INSTALL ${COUCHBASE_CXX_CLIENT_INSTALL}"
- "TAOCPP_JSON_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/taocpp-json"
- "TAOCPP_JSON_INSTALL_DOC_DIR ${CMAKE_INSTALL_DATAROOTDIR}/doc/tao/json"
- "TAOCPP_JSON_BUILD_TESTS OFF"
+ if(COUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY)
+ if(NOT TARGET opentelemetry)
+ # Disable curl HTTP client to avoid curl downloading and linking to BoringSSL
+@@ -196,103 +175,7 @@
"TAOCPP_JSON_BUILD_EXAMPLES OFF")
endif()
-
--
+
-if(NOT TARGET asio::asio)
- # https://github.com/chriskohlhoff/asio/tags
- cpmaddpackage(
- NAME
- asio
- GIT_TAG
-- asio-1-31-0
+- asio-1-34-2
- VERSION
-- 1.31.0
+- 1.34.2
- GITHUB_REPOSITORY
- "chriskohlhoff/asio"
-- EXCLUDE_FROM_ALL ON)
+- EXCLUDE_FROM_ALL ON
+- SYSTEM NO)
-endif()
-
-# ASIO doesn't use CMake, we have to configure it manually. Extra notes for using on Windows:
@@ -183,8 +65,17 @@ index af373ce..30cf2b6 100644
- add_library(asio STATIC ${asio_SOURCE_DIR}/asio/src/asio.cpp ${asio_SOURCE_DIR}/asio/src/asio_ssl.cpp)
-
- target_include_directories(asio SYSTEM PUBLIC ${asio_SOURCE_DIR}/asio/include)
-- target_compile_definitions(asio PRIVATE ASIO_STANDALONE=1 ASIO_NO_DEPRECATED=1 ASIO_SEPARATE_COMPILATION=1)
-- target_link_libraries(asio PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto)
+- target_compile_definitions(asio PUBLIC ASIO_STANDALONE=1 ASIO_NO_DEPRECATED=1 ASIO_SEPARATE_COMPILATION=1)
+- target_link_libraries(asio PRIVATE Threads::Threads)
+- if(COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL)
+- target_link_libraries(asio PUBLIC $<TARGET_OBJECTS:ssl> $<TARGET_OBJECTS:crypto>)
+- # Add BoringSSL include directories before asio's own include directories.
+- target_include_directories(
+- asio BEFORE PRIVATE $<BUILD_INTERFACE:$<TARGET_PROPERTY:ssl,INTERFACE_INCLUDE_DIRECTORIES>>
+- $<BUILD_INTERFACE:$<TARGET_PROPERTY:crypto,INTERFACE_INCLUDE_DIRECTORIES>>)
+- elseif(NOT COUCHBASE_CXX_CLIENT_POST_LINKED_OPENSSL)
+- target_link_libraries(asio PRIVATE OpenSSL::SSL OpenSSL::Crypto)
+- endif()
- set_target_properties(
- asio
- PROPERTIES C_VISIBILITY_PRESET hidden
@@ -196,17 +87,39 @@ index af373ce..30cf2b6 100644
- macro(get_win32_winnt version)
- if(CMAKE_SYSTEM_VERSION)
- set(ver ${CMAKE_SYSTEM_VERSION})
-- string(REGEX MATCH "^([0-9]+).([0-9])" ver ${ver})
-- string(REGEX MATCH "^([0-9]+)" verMajor ${ver})
+- string(
+- REGEX MATCH
+- "^([0-9]+).([0-9])"
+- ver
+- ${ver})
+- string(
+- REGEX MATCH
+- "^([0-9]+)"
+- verMajor
+- ${ver})
- # Check for Windows 10, b/c we'll need to convert to hex 'A'.
- if("${verMajor}" MATCHES "10")
- set(verMajor "A")
-- string(REGEX REPLACE "^([0-9]+)" ${verMajor} ver ${ver})
+- string(
+- REGEX
+- REPLACE "^([0-9]+)"
+- ${verMajor}
+- ver
+- ${ver})
- endif("${verMajor}" MATCHES "10")
- # Remove all remaining '.' characters.
-- string(REPLACE "." "" ver ${ver})
+- string(
+- REPLACE "."
+- ""
+- ver
+- ${ver})
- # Prepend each digit with a zero.
-- string(REGEX REPLACE "([0-9A-Z])" "0\\1" ver ${ver})
+- string(
+- REGEX
+- REPLACE "([0-9A-Z])"
+- "0\\1"
+- ver
+- ${ver})
- set(${version} "0x${ver}")
- endif()
- endmacro()
@@ -219,19 +132,20 @@ index af373ce..30cf2b6 100644
- message(STATUS "Set _WIN32_WINNT=${_WIN32_WINNT}")
-
- target_compile_definitions(asio INTERFACE _WIN32_WINNT=${_WIN32_WINNT} WIN32_LEAN_AND_MEAN)
+- target_compile_options(asio INTERFACE /bigobj)
- endif()
-
- add_library(asio::asio ALIAS asio)
-endif()
--
++# MINIFICPP PATCH: removed asio and splog declare_system_library
+
add_library(jsonsl OBJECT ${PROJECT_SOURCE_DIR}/third_party/jsonsl/jsonsl.c)
set_target_properties(jsonsl PROPERTIES C_VISIBILITY_PRESET hidden POSITION_INDEPENDENT_CODE TRUE)
- target_include_directories(jsonsl SYSTEM PUBLIC ${PROJECT_SOURCE_DIR}/third_party/jsonsl)
-
- declare_system_library(snappy)
+@@ -302,7 +185,5 @@
declare_system_library(llhttp::llhttp)
declare_system_library(hdr_histogram_static)
declare_system_library(Microsoft.GSL::GSL)
-declare_system_library(spdlog::spdlog)
-declare_system_library(asio)
declare_system_library(taocpp::json)
+ declare_system_library(snappy)
diff --git a/thirdparty/couchbase/use_fmt_instead_of_spdlog_fmt.patch b/thirdparty/couchbase/use_fmt_instead_of_spdlog_fmt.patch
new file mode 100644
index 000000000..b0951e65d
--- /dev/null
+++ b/thirdparty/couchbase/use_fmt_instead_of_spdlog_fmt.patch
@@ -0,0 +1,2641 @@
+Subject: [PATCH] use fmt instead of spdlog/fmt
+---
+Index: core/operations/management/eventing_upsert_function.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/eventing_upsert_function.cxx b/core/operations/management/eventing_upsert_function.cxx
+--- a/core/operations/management/eventing_upsert_function.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/eventing_upsert_function.cxx (date 1776177013947)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/contrib/traits.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/fmt/key_value_status_code.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/fmt/key_value_status_code.hxx b/core/fmt/key_value_status_code.hxx
+--- a/core/fmt/key_value_status_code.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/fmt/key_value_status_code.hxx (date 1776177013919)
+@@ -19,7 +19,7 @@
+
+ #include "core/error_context/key_value_status_code.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ /**
+ * Helper for fmtlib to format @ref couchbase::core::key_value_status_code objects.
+Index: test/test_transaction_examples.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/test/test_transaction_examples.cxx b/test/test_transaction_examples.cxx
+--- a/test/test_transaction_examples.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/test/test_transaction_examples.cxx (date 1776177013913)
+@@ -21,7 +21,7 @@
+ #include <couchbase/codec/codec_flags.hxx>
+ #include <couchbase/codec/tao_json_serializer.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json.hpp>
+ #include <tao/json/to_string.hpp>
+
+Index: core/fmt/key_value_extended_error_info.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/fmt/key_value_extended_error_info.hxx b/core/fmt/key_value_extended_error_info.hxx
+--- a/core/fmt/key_value_extended_error_info.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/fmt/key_value_extended_error_info.hxx (date 1776177013911)
+@@ -19,7 +19,7 @@
+
+ #include "core/error_context/key_value_extended_error_info.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ /**
+ * Helper for fmtlib to format @ref couchbase::key_value_extended_error_info objects.
+Index: core/fmt/key_value_error_map_attribute.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/fmt/key_value_error_map_attribute.hxx b/core/fmt/key_value_error_map_attribute.hxx
+--- a/core/fmt/key_value_error_map_attribute.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/fmt/key_value_error_map_attribute.hxx (date 1776177014144)
+@@ -19,7 +19,7 @@
+
+ #include "core/error_context/key_value_error_map_attribute.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::key_value_error_map_attribute> {
+Index: core/operations/management/search_index_upsert.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_upsert.cxx b/core/operations/management/search_index_upsert.cxx
+--- a/core/operations/management/search_index_upsert.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_upsert.cxx (date 1776177014126)
+@@ -22,7 +22,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/columnar/query_component.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/columnar/query_component.cxx b/core/columnar/query_component.cxx
+--- a/core/columnar/query_component.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/columnar/query_component.cxx (date 1776177014044)
+@@ -34,8 +34,8 @@
+ #include <asio/io_context.hpp>
+ #include <asio/steady_timer.hpp>
+ #include <gsl/util>
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+ #include <tl/expected.hpp>
+
+Index: core/operations/management/analytics_link_utils.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_link_utils.hxx b/core/operations/management/analytics_link_utils.hxx
+--- a/core/operations/management/analytics_link_utils.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_link_utils.hxx (date 1776177014124)
+@@ -19,7 +19,7 @@
+
+ #include "core/utils/url_codec.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <algorithm>
+ #include <string>
+Index: test/test_unit_connection_string.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/test/test_unit_connection_string.cxx b/test/test_unit_connection_string.cxx
+--- a/test/test_unit_connection_string.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/test/test_unit_connection_string.cxx (date 1776177014011)
+@@ -22,7 +22,7 @@
+
+ #include <couchbase/build_config.hxx>
+
+-#include <spdlog/fmt/bundled/ranges.h>
++#include <fmt/ranges.h>
+
+ TEST_CASE("unit: connection string", "[unit]")
+ {
+Index: core/operations/management/search_index_control_plan_freeze.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_control_plan_freeze.cxx b/core/operations/management/search_index_control_plan_freeze.cxx
+--- a/core/operations/management/search_index_control_plan_freeze.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_control_plan_freeze.cxx (date 1776177014021)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/impl/query_error_context.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/query_error_context.cxx b/core/impl/query_error_context.cxx
+--- a/core/impl/query_error_context.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/query_error_context.cxx (date 1776177013926)
+@@ -17,7 +17,7 @@
+
+ #include "core/error_context/query_error_context.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/to_string.hpp>
+
+ #include <couchbase/fmt/retry_reason.hxx>
+Index: core/operations/management/analytics_get_pending_mutations.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_get_pending_mutations.cxx b/core/operations/management/analytics_get_pending_mutations.cxx
+--- a/core/operations/management/analytics_get_pending_mutations.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_get_pending_mutations.cxx (date 1776177013875)
+@@ -20,7 +20,7 @@
+ #include "core/utils/json.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/view_index_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/view_index_drop.cxx b/core/operations/management/view_index_drop.cxx
+--- a/core/operations/management/view_index_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/view_index_drop.cxx (date 1776177013996)
+@@ -20,7 +20,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/eventing_resume_function.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/eventing_resume_function.cxx b/core/operations/management/eventing_resume_function.cxx
+--- a/core/operations/management/eventing_resume_function.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/eventing_resume_function.cxx (date 1776177013969)
+@@ -20,7 +20,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/columnar/columnar_agent_config.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/columnar/columnar_agent_config.cxx b/core/columnar/columnar_agent_config.cxx
+--- a/core/columnar/columnar_agent_config.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/columnar/columnar_agent_config.cxx (date 1776177014156)
+@@ -17,8 +17,8 @@
+
+ #include "agent_config.hxx"
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+
+ #include <string>
+
+Index: test/utils/test_data.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/test/utils/test_data.cxx b/test/utils/test_data.cxx
+--- a/test/utils/test_data.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/test/utils/test_data.cxx (date 1776177013894)
+@@ -17,8 +17,8 @@
+
+ #include "core/mcbp/big_endian.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
+-#include <spdlog/fmt/bundled/ranges.h>
++#include <fmt/core.h>
++#include <fmt/ranges.h>
+
+ #include <chrono>
+ #include <filesystem>
+Index: core/operations/management/search_index_get_stats.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_get_stats.cxx b/core/operations/management/search_index_get_stats.cxx
+--- a/core/operations/management/search_index_get_stats.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_get_stats.cxx (date 1776177014053)
+@@ -20,7 +20,7 @@
+ #include "core/utils/json.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: test/utils/wait_until.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/test/utils/wait_until.cxx b/test/utils/wait_until.cxx
+--- a/test/utils/wait_until.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/test/utils/wait_until.cxx (date 1776177013870)
+@@ -34,7 +34,7 @@
+ #include "core/topology/collections_manifest_fmt.hxx"
+ #include "core/utils/json.hxx"
+
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+ #include <tao/json/value.hpp>
+
+ namespace test::utils
+Index: core/operations/management/analytics_dataset_create.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_dataset_create.cxx b/core/operations/management/analytics_dataset_create.cxx
+--- a/core/operations/management/analytics_dataset_create.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_dataset_create.cxx (date 1776177014167)
+@@ -21,7 +21,7 @@
+ #include "core/utils/name_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/search_index_control_ingest.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_control_ingest.cxx b/core/operations/management/search_index_control_ingest.cxx
+--- a/core/operations/management/search_index_control_ingest.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_control_ingest.cxx (date 1776177013872)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/group_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/group_drop.cxx b/core/operations/management/group_drop.cxx
+--- a/core/operations/management/group_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/group_drop.cxx (date 1776177013868)
+@@ -19,7 +19,7 @@
+
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ namespace couchbase::core::operations::management
+ {
+Index: core/operations/management/analytics_dataverse_create.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_dataverse_create.cxx b/core/operations/management/analytics_dataverse_create.cxx
+--- a/core/operations/management/analytics_dataverse_create.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_dataverse_create.cxx (date 1776177013965)
+@@ -21,7 +21,7 @@
+ #include "core/utils/name_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/eventing_pause_function.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/eventing_pause_function.cxx b/core/operations/management/eventing_pause_function.cxx
+--- a/core/operations/management/eventing_pause_function.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/eventing_pause_function.cxx (date 1776177014023)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/impl/date_range.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/date_range.cxx b/core/impl/date_range.cxx
+--- a/core/impl/date_range.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/date_range.cxx (date 1776177013922)
+@@ -17,8 +17,8 @@
+
+ #include <couchbase/date_range.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+
+ #include <chrono>
+ #include <ctime>
+Index: core/operations/management/analytics_dataset_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_dataset_drop.cxx b/core/operations/management/analytics_dataset_drop.cxx
+--- a/core/operations/management/analytics_dataset_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_dataset_drop.cxx (date 1776177014132)
+@@ -21,7 +21,7 @@
+ #include "core/utils/name_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/sasl/oauthbearer/oauthbearer.cc
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/sasl/oauthbearer/oauthbearer.cc b/core/sasl/oauthbearer/oauthbearer.cc
+--- a/core/sasl/oauthbearer/oauthbearer.cc (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/sasl/oauthbearer/oauthbearer.cc (date 1776177014176)
+@@ -16,7 +16,7 @@
+
+ #include "oauthbearer.h"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ namespace couchbase::core::sasl::mechanism::oauthbearer
+ {
+Index: core/operations/management/search_index_get.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_get.cxx b/core/operations/management/search_index_get.cxx
+--- a/core/operations/management/search_index_get.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_get.cxx (date 1776177013905)
+@@ -22,7 +22,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/search_index_get_documents_count.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_get_documents_count.cxx b/core/operations/management/search_index_get_documents_count.cxx
+--- a/core/operations/management/search_index_get_documents_count.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_get_documents_count.cxx (date 1776177013866)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/bucket_describe.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/bucket_describe.cxx b/core/operations/management/bucket_describe.cxx
+--- a/core/operations/management/bucket_describe.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/bucket_describe.cxx (date 1776177014152)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include <algorithm>
+Index: core/impl/date_range_query.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/date_range_query.cxx b/core/impl/date_range_query.cxx
+--- a/core/impl/date_range_query.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/date_range_query.cxx (date 1776177013915)
+@@ -21,8 +21,8 @@
+
+ #include <couchbase/error_codes.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+ #include <tao/json/type.hpp>
+
+ #include <chrono>
+Index: core/operations/management/analytics_link_connect.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_link_connect.cxx b/core/operations/management/analytics_link_connect.cxx
+--- a/core/operations/management/analytics_link_connect.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_link_connect.cxx (date 1776177014122)
+@@ -21,7 +21,7 @@
+ #include "core/utils/name_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/protocol/hello_feature_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/protocol/hello_feature_fmt.hxx b/core/protocol/hello_feature_fmt.hxx
+--- a/core/protocol/hello_feature_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/protocol/hello_feature_fmt.hxx (date 1776177014063)
+@@ -19,7 +19,7 @@
+
+ #include "hello_feature.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::protocol::hello_feature> {
+Index: core/operations/management/view_index_get_all.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/view_index_get_all.cxx b/core/operations/management/view_index_get_all.cxx
+--- a/core/operations/management/view_index_get_all.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/view_index_get_all.cxx (date 1776177014148)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/impl/scope.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/scope.cxx b/core/impl/scope.cxx
+--- a/core/impl/scope.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/scope.cxx (date 1776177013917)
+@@ -34,7 +34,7 @@
+ #include <couchbase/collection.hxx>
+ #include <couchbase/scope.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <memory>
+ #include <utility>
+Index: core/operations/management/scope_get_all.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/scope_get_all.cxx b/core/operations/management/scope_get_all.cxx
+--- a/core/operations/management/scope_get_all.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/scope_get_all.cxx (date 1776177013885)
+@@ -22,7 +22,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/protocol/magic_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/protocol/magic_fmt.hxx b/core/protocol/magic_fmt.hxx
+--- a/core/protocol/magic_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/protocol/magic_fmt.hxx (date 1776177014061)
+@@ -19,7 +19,7 @@
+
+ #include "magic.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::protocol::magic> {
+Index: core/impl/numeric_range.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/numeric_range.cxx b/core/impl/numeric_range.cxx
+--- a/core/impl/numeric_range.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/numeric_range.cxx (date 1776177014097)
+@@ -17,7 +17,7 @@
+
+ #include <couchbase/numeric_range.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+
+ namespace couchbase
+ {
+Index: core/operations/management/analytics_link_get_all.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_link_get_all.cxx b/core/operations/management/analytics_link_get_all.cxx
+--- a/core/operations/management/analytics_link_get_all.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_link_get_all.cxx (date 1776177013852)
+@@ -24,7 +24,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/scope_create.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/scope_create.cxx b/core/operations/management/scope_create.cxx
+--- a/core/operations/management/scope_create.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/scope_create.cxx (date 1776177014109)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include <regex>
+Index: core/impl/search.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/search.cxx b/core/impl/search.cxx
+--- a/core/impl/search.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/search.cxx (date 1776177013924)
+@@ -29,7 +29,7 @@
+ #include <couchbase/match_none_query.hxx>
+ #include <utility>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ namespace couchbase::core::impl
+ {
+Index: core/impl/expiry.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/expiry.cxx b/core/impl/expiry.cxx
+--- a/core/impl/expiry.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/expiry.cxx (date 1776177013828)
+@@ -18,8 +18,8 @@
+ #include <couchbase/error_codes.hxx>
+ #include <couchbase/expiry.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+
+ #include <chrono>
+ #include <cstdint>
+Index: tools/utils.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/utils.hxx b/tools/utils.hxx
+--- a/tools/utils.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/utils.hxx (date 1776177014136)
+@@ -26,8 +26,8 @@
+
+ #include <CLI/CLI.hpp>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+
+ #include <chrono>
+ #include <cstdint>
+Index: core/protocol/client_response.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/protocol/client_response.hxx b/core/protocol/client_response.hxx
+--- a/core/protocol/client_response.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/protocol/client_response.hxx (date 1776177014140)
+@@ -34,7 +34,7 @@
+ #include <couchbase/cas.hxx>
+
+ #include <gsl/assert>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <cmath>
+ #include <cstring>
+Index: core/operations/management/analytics_dataverse_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_dataverse_drop.cxx b/core/operations/management/analytics_dataverse_drop.cxx
+--- a/core/operations/management/analytics_dataverse_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_dataverse_drop.cxx (date 1776177013850)
+@@ -21,7 +21,7 @@
+ #include "core/utils/name_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: tools/cbc.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/cbc.cxx b/tools/cbc.cxx
+--- a/tools/cbc.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/cbc.cxx (date 1776177013900)
+@@ -29,7 +29,7 @@
+
+ #include "core/meta/version.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ auto
+ main(int argc, const char** argv) -> int
+Index: core/operations/management/query_index_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/query_index_drop.cxx b/core/operations/management/query_index_drop.cxx
+--- a/core/operations/management/query_index_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/query_index_drop.cxx (date 1776177013877)
+@@ -21,7 +21,7 @@
+ #include "core/utils/keyspace.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include <regex>
+Index: core/operations/management/bucket_flush.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/bucket_flush.cxx b/core/operations/management/bucket_flush.cxx
+--- a/core/operations/management/bucket_flush.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/bucket_flush.cxx (date 1776177013936)
+@@ -20,7 +20,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ namespace couchbase::core::operations::management
+ {
+Index: tools/get.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/get.cxx b/tools/get.cxx
+--- a/tools/get.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/get.cxx (date 1776177014158)
+@@ -29,7 +29,7 @@
+ #include <couchbase/read_preference.hxx>
+
+ #include <spdlog/fmt/bin_to_hex.h>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+ #include <tao/json.hpp>
+
+ #include <couchbase/fmt/cas.hxx>
+Index: core/operations/management/query_index_create.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/query_index_create.cxx b/core/operations/management/query_index_create.cxx
+--- a/core/operations/management/query_index_create.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/query_index_create.cxx (date 1776177014120)
+@@ -21,7 +21,7 @@
+ #include "core/utils/keyspace.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include <regex>
+Index: core/operations/management/analytics_index_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_index_drop.cxx b/core/operations/management/analytics_index_drop.cxx
+--- a/core/operations/management/analytics_index_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_index_drop.cxx (date 1776177013898)
+@@ -21,7 +21,7 @@
+ #include "core/utils/name_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/change_password.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/change_password.cxx b/core/operations/management/change_password.cxx
+--- a/core/operations/management/change_password.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/change_password.cxx (date 1776177013994)
+@@ -19,7 +19,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ namespace couchbase::core::operations::management
+ {
+Index: core/operations/management/eventing_drop_function.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/eventing_drop_function.cxx b/core/operations/management/eventing_drop_function.cxx
+--- a/core/operations/management/eventing_drop_function.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/eventing_drop_function.cxx (date 1776177014162)
+@@ -20,7 +20,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/impl/best_effort_retry_strategy.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/best_effort_retry_strategy.cxx b/core/impl/best_effort_retry_strategy.cxx
+--- a/core/impl/best_effort_retry_strategy.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/best_effort_retry_strategy.cxx (date 1776177013890)
+@@ -21,7 +21,7 @@
+ #include <couchbase/retry_reason.hxx>
+ #include <couchbase/retry_request.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <algorithm>
+ #include <chrono>
+Index: tools/pillowfight.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/pillowfight.cxx b/tools/pillowfight.cxx
+--- a/tools/pillowfight.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/pillowfight.cxx (date 1776177013889)
+@@ -31,8 +31,8 @@
+ #include <asio/steady_timer.hpp>
+ #include <gsl/util>
+ #include <hdr/hdr_histogram.h>
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/std.h>
++#include <fmt/chrono.h>
++#include <fmt/std.h>
+ #include <tao/json.hpp>
+
+ #include <couchbase/fmt/cas.hxx>
+Index: tools/utils.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/utils.cxx b/tools/utils.cxx
+--- a/tools/utils.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/utils.cxx (date 1776177013956)
+@@ -87,7 +87,7 @@
+ #endif
+
+ #include <spdlog/details/os.h>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+ #include <spdlog/spdlog.h>
+ #include <tao/json/value.hpp>
+
+Index: core/operations/management/view_index_get.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/view_index_get.cxx b/core/operations/management/view_index_get.cxx
+--- a/core/operations/management/view_index_get.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/view_index_get.cxx (date 1776177013831)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: tools/query.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/query.cxx b/tools/query.cxx
+--- a/tools/query.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/query.cxx (date 1776177014058)
+@@ -31,7 +31,7 @@
+ #include <couchbase/fmt/query_status.hxx>
+
+ #include <spdlog/fmt/bin_to_hex.h>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+
+ #include <tao/json.hpp>
+ #include <tao/json/type.hpp>
+Index: core/query_context.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/query_context.hxx b/core/query_context.hxx
+--- a/core/query_context.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/query_context.hxx (date 1776177014099)
+@@ -16,7 +16,7 @@
+ */
+ #pragma once
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <optional>
+ #include <string>
+Index: core/key_value_config.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/key_value_config.cxx b/core/key_value_config.cxx
+--- a/core/key_value_config.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/key_value_config.cxx (date 1776177014056)
+@@ -15,8 +15,8 @@
+
+ #include "key_value_config.hxx"
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+
+ namespace couchbase::core
+ {
+Index: core/operations/management/search_index_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_drop.cxx b/core/operations/management/search_index_drop.cxx
+--- a/core/operations/management/search_index_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_drop.cxx (date 1776177013928)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/impl/error.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/error.cxx b/core/impl/error.cxx
+--- a/core/impl/error.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/error.cxx (date 1776177013836)
+@@ -43,7 +43,7 @@
+ #include <couchbase/error_codes.hxx>
+ #include <couchbase/error_context.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include "core/transactions/internal/exceptions_internal_fmt.hxx"
+Index: tools/version.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/version.cxx b/tools/version.cxx
+--- a/tools/version.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/version.cxx (date 1776177014111)
+@@ -21,7 +21,7 @@
+
+ #include <core/meta/version.hxx>
+
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/format.h>
+ #include <tao/json.hpp>
+
+ namespace
+Index: core/impl/dns_srv_tracker.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/dns_srv_tracker.cxx b/core/impl/dns_srv_tracker.cxx
+--- a/core/impl/dns_srv_tracker.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/dns_srv_tracker.cxx (date 1776177014165)
+@@ -31,7 +31,7 @@
+ #include <asio/bind_executor.hpp>
+ #include <asio/io_context.hpp>
+ #include <asio/post.hpp>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <functional>
+ #include <memory>
+Index: core/operations/management/bucket_get.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/bucket_get.cxx b/core/operations/management/bucket_get.cxx
+--- a/core/operations/management/bucket_get.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/bucket_get.cxx (date 1776177014128)
+@@ -22,7 +22,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: tools/beam.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/beam.cxx b/tools/beam.cxx
+--- a/tools/beam.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/beam.cxx (date 1776177013896)
+@@ -25,8 +25,8 @@
+ #include <couchbase/cluster.hxx>
+ #include <couchbase/codec/tao_json_serializer.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/ranges.h>
++#include <fmt/chrono.h>
++#include <fmt/ranges.h>
+
+ #include <couchbase/fmt/cas.hxx>
+ #include <couchbase/fmt/error.hxx>
+Index: core/http_component.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/http_component.cxx b/core/http_component.cxx
+--- a/core/http_component.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/http_component.cxx (date 1776177014138)
+@@ -25,7 +25,7 @@
+ #include <couchbase/build_config.hxx>
+
+ #include <asio/error.hpp>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+ #include <tl/expected.hpp>
+
+ #include <memory>
+Index: core/protocol/frame_info_id_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/protocol/frame_info_id_fmt.hxx b/core/protocol/frame_info_id_fmt.hxx
+--- a/core/protocol/frame_info_id_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/protocol/frame_info_id_fmt.hxx (date 1776177013967)
+@@ -19,7 +19,7 @@
+
+ #include "frame_info_id.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::protocol::request_frame_info_id> {
+Index: tools/analytics.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/analytics.cxx b/tools/analytics.cxx
+--- a/tools/analytics.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/analytics.cxx (date 1776177013985)
+@@ -30,7 +30,7 @@
+
+ #include <asio/io_context.hpp>
+ #include <spdlog/fmt/bin_to_hex.h>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+ #include <tao/json.hpp>
+
+ #include <regex>
+Index: core/operations/management/collection_create.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/collection_create.cxx b/core/operations/management/collection_create.cxx
+--- a/core/operations/management/collection_create.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/collection_create.cxx (date 1776177013892)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include <regex>
+Index: core/impl/collection.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/collection.cxx b/core/impl/collection.cxx
+--- a/core/impl/collection.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/collection.cxx (date 1776177013958)
+@@ -94,7 +94,7 @@
+ #include <couchbase/unlock_options.hxx>
+ #include <couchbase/upsert_options.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <chrono>
+ #include <cstdint>
+Index: examples/async_game_server.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/examples/async_game_server.cxx b/examples/async_game_server.cxx
+--- a/examples/async_game_server.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/examples/async_game_server.cxx (date 1776177013934)
+@@ -19,7 +19,7 @@
+ #include <couchbase/codec/tao_json_serializer.hxx>
+ #include <couchbase/logger.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <couchbase/fmt/error.hxx>
+
+Index: core/protocol/server_opcode_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/protocol/server_opcode_fmt.hxx b/core/protocol/server_opcode_fmt.hxx
+--- a/core/protocol/server_opcode_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/protocol/server_opcode_fmt.hxx (date 1776177014084)
+@@ -19,7 +19,7 @@
+
+ #include "server_opcode.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::protocol::server_opcode> {
+Index: examples/bulk_transactional_get_replace.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/examples/bulk_transactional_get_replace.cxx b/examples/bulk_transactional_get_replace.cxx
+--- a/examples/bulk_transactional_get_replace.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/examples/bulk_transactional_get_replace.cxx (date 1776177013864)
+@@ -19,8 +19,8 @@
+ #include <couchbase/codec/tao_json_serializer.hxx>
+ #include <couchbase/transactions.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/chrono.h>
++#include <fmt/format.h>
+ #include <tao/json/to_string.hpp>
+
+ #include <couchbase/fmt/error.hxx>
+Index: core/collections_component.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/collections_component.cxx b/core/collections_component.cxx
+--- a/core/collections_component.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/collections_component.cxx (date 1776177014150)
+@@ -42,7 +42,7 @@
+ #include <asio/error.hpp>
+ #include <asio/io_context.hpp>
+ #include <asio/steady_timer.hpp>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+ #include <tao/pegtl/parse_error.hpp>
+ #include <tl/expected.hpp>
+Index: examples/bulk_base_api.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/examples/bulk_base_api.cxx b/examples/bulk_base_api.cxx
+--- a/examples/bulk_base_api.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/examples/bulk_base_api.cxx (date 1776177013999)
+@@ -18,8 +18,8 @@
+ #include <couchbase/cluster.hxx>
+ #include <couchbase/codec/tao_json_serializer.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/chrono.h>
++#include <fmt/format.h>
+ #include <tao/json/to_string.hpp>
+
+ #include <couchbase/fmt/error.hxx>
+Index: examples/distributed_mutex.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/examples/distributed_mutex.cxx b/examples/distributed_mutex.cxx
+--- a/examples/distributed_mutex.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/examples/distributed_mutex.cxx (date 1776177014094)
+@@ -19,8 +19,8 @@
+ #include <couchbase/cluster.hxx>
+ #include <couchbase/codec/tao_json_serializer.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/chrono.h>
++#include <fmt/format.h>
+
+ #include <couchbase/fmt/error_context.hxx>
+
+Index: examples/minimal.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/examples/minimal.cxx b/examples/minimal.cxx
+--- a/examples/minimal.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/examples/minimal.cxx (date 1776177014038)
+@@ -19,7 +19,7 @@
+ #include <couchbase/codec/tao_json_serializer.hxx>
+ #include <couchbase/logger.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <couchbase/fmt/error.hxx>
+
+Index: core/document_id_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/document_id_fmt.hxx b/core/document_id_fmt.hxx
+--- a/core/document_id_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/document_id_fmt.hxx (date 1776177014065)
+@@ -19,7 +19,7 @@
+
+ #include "document_id.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::document_id> {
+Index: examples/bulk_transactional_api.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/examples/bulk_transactional_api.cxx b/examples/bulk_transactional_api.cxx
+--- a/examples/bulk_transactional_api.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/examples/bulk_transactional_api.cxx (date 1776177013847)
+@@ -19,8 +19,8 @@
+ #include <couchbase/codec/tao_json_serializer.hxx>
+ #include <couchbase/transactions.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/chrono.h>
++#include <fmt/format.h>
+ #include <tao/json/to_string.hpp>
+
+ #include <couchbase/fmt/error.hxx>
+Index: core/impl/fail_fast_retry_strategy.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/fail_fast_retry_strategy.cxx b/core/impl/fail_fast_retry_strategy.cxx
+--- a/core/impl/fail_fast_retry_strategy.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/fail_fast_retry_strategy.cxx (date 1776177013971)
+@@ -20,7 +20,7 @@
+ #include <couchbase/retry_reason.hxx>
+ #include <couchbase/retry_request.hxx>
+
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/format.h>
+
+ #include <memory>
+ #include <string>
+Index: core/bucket.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/bucket.cxx b/core/bucket.cxx
+--- a/core/bucket.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/bucket.cxx (date 1776177014174)
+@@ -55,7 +55,7 @@
+ #include <asio/post.hpp>
+ #include <asio/ssl/context.hpp>
+ #include <gsl/span>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <algorithm>
+ #include <chrono>
+Index: core/impl/key_value_error_context.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/key_value_error_context.cxx b/core/impl/key_value_error_context.cxx
+--- a/core/impl/key_value_error_context.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/key_value_error_context.cxx (date 1776177014016)
+@@ -17,7 +17,7 @@
+
+ #include "core/error_context/key_value_error_context.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/to_string.hpp>
+
+ #include "core/fmt/key_value_error_map_attribute.hxx"
+Index: core/topology/configuration_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/topology/configuration_fmt.hxx b/core/topology/configuration_fmt.hxx
+--- a/core/topology/configuration_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/topology/configuration_fmt.hxx (date 1776177014105)
+@@ -22,7 +22,7 @@
+ #include "core/service_type_fmt.hxx"
+ #include "core/utils/join_strings.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::topology::configuration::node> {
+Index: core/transactions/async_attempt_context.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/async_attempt_context.cxx b/core/transactions/async_attempt_context.cxx
+--- a/core/transactions/async_attempt_context.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/async_attempt_context.cxx (date 1776177013977)
+@@ -18,7 +18,7 @@
+ #include <couchbase/scope.hxx>
+ #include <couchbase/transactions/async_attempt_context.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ namespace couchbase::transactions
+ {
+Index: core/protocol/client_opcode_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/protocol/client_opcode_fmt.hxx b/core/protocol/client_opcode_fmt.hxx
+--- a/core/protocol/client_opcode_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/protocol/client_opcode_fmt.hxx (date 1776177014050)
+@@ -19,7 +19,7 @@
+
+ #include "client_opcode.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::protocol::client_opcode> {
+Index: core/transactions/exceptions_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/exceptions_fmt.hxx b/core/transactions/exceptions_fmt.hxx
+--- a/core/transactions/exceptions_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/exceptions_fmt.hxx (date 1776177013940)
+@@ -18,7 +18,7 @@
+
+ #include "exceptions.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::transactions::external_exception> {
+Index: core/topology/capabilities_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/topology/capabilities_fmt.hxx b/core/topology/capabilities_fmt.hxx
+--- a/core/topology/capabilities_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/topology/capabilities_fmt.hxx (date 1776177013855)
+@@ -19,7 +19,7 @@
+
+ #include "capabilities.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::bucket_capability> {
+Index: core/transactions/attempt_context.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/attempt_context.cxx b/core/transactions/attempt_context.cxx
+--- a/core/transactions/attempt_context.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/attempt_context.cxx (date 1776177014154)
+@@ -18,7 +18,7 @@
+ #include <couchbase/scope.hxx>
+ #include <couchbase/transactions/attempt_context.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ namespace couchbase::transactions
+ {
+Index: core/topology/collections_manifest_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/topology/collections_manifest_fmt.hxx b/core/topology/collections_manifest_fmt.hxx
+--- a/core/topology/collections_manifest_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/topology/collections_manifest_fmt.hxx (date 1776177014006)
+@@ -21,7 +21,7 @@
+
+ #include "core/utils/join_strings.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <vector>
+
+Index: core/seed_config.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/seed_config.cxx b/core/seed_config.cxx
+--- a/core/seed_config.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/seed_config.cxx (date 1776177014088)
+@@ -15,8 +15,8 @@
+
+ #include "seed_config.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
+-#include <spdlog/fmt/bundled/ranges.h>
++#include <fmt/core.h>
++#include <fmt/ranges.h>
+
+ namespace couchbase::core
+ {
+Index: core/retry_orchestrator.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/retry_orchestrator.cxx b/core/retry_orchestrator.cxx
+--- a/core/retry_orchestrator.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/retry_orchestrator.cxx (date 1776177013963)
+@@ -21,7 +21,7 @@
+
+ #include <couchbase/fmt/retry_reason.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+
+ namespace couchbase::core
+ {
+Index: core/transactions/result_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/result_fmt.hxx b/core/transactions/result_fmt.hxx
+--- a/core/transactions/result_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/result_fmt.hxx (date 1776177014178)
+@@ -18,7 +18,7 @@
+
+ #include "result.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::transactions::result> {
+Index: core/document_id.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/document_id.cxx b/core/document_id.cxx
+--- a/core/document_id.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/document_id.cxx (date 1776177014103)
+@@ -20,7 +20,7 @@
+ #include "core/utils/binary.hxx"
+ #include "core/utils/unsigned_leb128.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <algorithm>
+ #include <cstddef>
+Index: core/websocket_codec.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/websocket_codec.cxx b/core/websocket_codec.cxx
+--- a/core/websocket_codec.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/websocket_codec.cxx (date 1776177013887)
+@@ -20,7 +20,7 @@
+ #include "core/platform/random.h"
+
+ #include <llhttp.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <algorithm>
+ #include <array>
+Index: core/transactions/transaction_links.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/transaction_links.hxx b/core/transactions/transaction_links.hxx
+--- a/core/transactions/transaction_links.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/transaction_links.hxx (date 1776177014101)
+@@ -18,7 +18,7 @@
+
+ #include <couchbase/codec/encoded_value.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include <optional>
+Index: core/service_type_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/service_type_fmt.hxx b/core/service_type_fmt.hxx
+--- a/core/service_type_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/service_type_fmt.hxx (date 1776177013920)
+@@ -19,7 +19,7 @@
+
+ #include "service_type.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::service_type> {
+Index: core/mcbp/operation_queue.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/mcbp/operation_queue.cxx b/core/mcbp/operation_queue.cxx
+--- a/core/mcbp/operation_queue.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/mcbp/operation_queue.cxx (date 1776177014032)
+@@ -23,7 +23,7 @@
+
+ #include <couchbase/error_codes.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <algorithm>
+ #include <iterator>
+Index: core/management/rbac_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/management/rbac_fmt.hxx b/core/management/rbac_fmt.hxx
+--- a/core/management/rbac_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/management/rbac_fmt.hxx (date 1776177014042)
+@@ -19,7 +19,7 @@
+
+ #include "rbac.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::management::rbac::auth_domain> {
+Index: core/agent_group_config.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/agent_group_config.cxx b/core/agent_group_config.cxx
+--- a/core/agent_group_config.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/agent_group_config.cxx (date 1776177013860)
+@@ -15,7 +15,7 @@
+
+ #include "agent_group_config.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <string>
+
+Index: core/transactions/internal/exceptions_internal_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/internal/exceptions_internal_fmt.hxx b/core/transactions/internal/exceptions_internal_fmt.hxx
+--- a/core/transactions/internal/exceptions_internal_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/internal/exceptions_internal_fmt.hxx (date 1776177013953)
+@@ -16,7 +16,7 @@
+
+ #pragma once
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::transactions::error_class> {
+Index: core/transactions/internal/atr_cleanup_entry.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/internal/atr_cleanup_entry.hxx b/core/transactions/internal/atr_cleanup_entry.hxx
+--- a/core/transactions/internal/atr_cleanup_entry.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/internal/atr_cleanup_entry.hxx (date 1776177014142)
+@@ -21,7 +21,7 @@
+ #include "core/transactions/transaction_get_result.hxx"
+ #include "logging.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <chrono>
+ #include <memory>
+Index: core/crud_component.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/crud_component.cxx b/core/crud_component.cxx
+--- a/core/crud_component.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/crud_component.cxx (date 1776177014113)
+@@ -43,7 +43,7 @@
+ #include <gsl/span_ext>
+ #include <gsl/util>
+ #include <snappy.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+ #include <tl/expected.hpp>
+
+Index: core/cluster_agent_config.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/cluster_agent_config.cxx b/core/cluster_agent_config.cxx
+--- a/core/cluster_agent_config.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/cluster_agent_config.cxx (date 1776177014034)
+@@ -15,7 +15,7 @@
+
+ #include "cluster_agent_config.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <string>
+
+Index: core/transactions/internal/doc_record_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/internal/doc_record_fmt.hxx b/core/transactions/internal/doc_record_fmt.hxx
+--- a/core/transactions/internal/doc_record_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/internal/doc_record_fmt.hxx (date 1776177014025)
+@@ -17,7 +17,7 @@
+
+ #include "doc_record.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::transactions::doc_record> {
+Index: core/transactions/internal/client_record.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/internal/client_record.hxx b/core/transactions/internal/client_record.hxx
+--- a/core/transactions/internal/client_record.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/internal/client_record.hxx (date 1776177014051)
+@@ -15,7 +15,7 @@
+ */
+ #pragma once
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <string>
+ #include <vector>
+Index: core/app_telemetry_meter.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/app_telemetry_meter.cxx b/core/app_telemetry_meter.cxx
+--- a/core/app_telemetry_meter.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/app_telemetry_meter.cxx (date 1776177014160)
+@@ -22,7 +22,7 @@
+ #include "utils/json.hxx"
+
+ #include <spdlog/fmt/bin_to_hex.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/to_string.hpp>
+ #include <tao/json/value.hpp>
+
+Index: core/transactions/internal/logging.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/transactions/internal/logging.hxx b/core/transactions/internal/logging.hxx
+--- a/core/transactions/internal/logging.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/transactions/internal/logging.hxx (date 1776177013907)
+@@ -17,7 +17,7 @@
+
+ #include <core/logger/logger.hxx>
+
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/format.h>
+
+ namespace couchbase::core::transactions
+ {
+Index: core/diagnostics_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/diagnostics_fmt.hxx b/core/diagnostics_fmt.hxx
+--- a/core/diagnostics_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/diagnostics_fmt.hxx (date 1776177014048)
+@@ -19,7 +19,7 @@
+
+ #include "diagnostics.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::diag::cluster_state> {
+Index: core/error_context/key_value_json.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/error_context/key_value_json.hxx b/core/error_context/key_value_json.hxx
+--- a/core/error_context/key_value_json.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/error_context/key_value_json.hxx (date 1776177014172)
+@@ -22,7 +22,7 @@
+
+ #include "key_value_error_context.hxx"
+
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/format.h>
+ #include <tao/json/forward.hpp>
+
+ namespace tao::json
+Index: core/error_context/query_public_json.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/error_context/query_public_json.hxx b/core/error_context/query_public_json.hxx
+--- a/core/error_context/query_public_json.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/error_context/query_public_json.hxx (date 1776177013841)
+@@ -21,7 +21,7 @@
+
+ #include <couchbase/fmt/retry_reason.hxx>
+
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/format.h>
+ #include <tao/json/forward.hpp>
+
+ namespace tao::json
+Index: core/mcbp/packet.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/mcbp/packet.cxx b/core/mcbp/packet.cxx
+--- a/core/mcbp/packet.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/mcbp/packet.cxx (date 1776177014163)
+@@ -23,7 +23,7 @@
+ #include "core/fmt/key_value_status_code.hxx"
+
+ #include <spdlog/fmt/bin_to_hex.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <iterator>
+
+Index: core/origin.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/origin.cxx b/core/origin.cxx
+--- a/core/origin.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/origin.cxx (date 1776177013982)
+@@ -21,8 +21,8 @@
+ #include "core/utils/connection_string.hxx"
+ #include "topology/configuration.hxx"
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+
+ #include <tao/json.hpp>
+
+Index: core/meta/version.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/meta/version.cxx b/core/meta/version.cxx
+--- a/core/meta/version.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/meta/version.cxx (date 1776177014046)
+@@ -32,7 +32,7 @@
+ #include <hdr/hdr_histogram_version.h>
+ #include <llhttp.h>
+ #include <snappy-stubs-public.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <spdlog/version.h>
+ #ifdef COUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY
+ #include <opentelemetry/version.h>
+Index: core/core_sdk_shim.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/core_sdk_shim.cxx b/core/core_sdk_shim.cxx
+--- a/core/core_sdk_shim.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/core_sdk_shim.cxx (date 1776177014036)
+@@ -15,7 +15,7 @@
+
+ #include "core_sdk_shim.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <string>
+
+Index: core/error_context/subdocument_json.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/error_context/subdocument_json.hxx b/core/error_context/subdocument_json.hxx
+--- a/core/error_context/subdocument_json.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/error_context/subdocument_json.hxx (date 1776177014030)
+@@ -21,7 +21,7 @@
+
+ #include <couchbase/fmt/retry_reason.hxx>
+
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/format.h>
+ #include <tao/json/forward.hpp>
+
+ #include "key_value_json.hxx"
+Index: core/config_profiles.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/config_profiles.cxx b/core/config_profiles.cxx
+--- a/core/config_profiles.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/config_profiles.cxx (date 1776177014013)
+@@ -20,7 +20,7 @@
+ #include "cluster_options.hxx"
+ #include "core/config_profile.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <chrono>
+ #include <mutex>
+Index: core/app_telemetry_reporter.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/app_telemetry_reporter.cxx b/core/app_telemetry_reporter.cxx
+--- a/core/app_telemetry_reporter.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/app_telemetry_reporter.cxx (date 1776177014003)
+@@ -33,8 +33,8 @@
+ #include <asio/steady_timer.hpp>
+ #include <llhttp.h>
+ #include <spdlog/fmt/bin_to_hex.h>
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+ #include <tao/json/to_string.hpp>
+ #include <tao/json/value.hpp>
+
+Index: core/agent_config.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/agent_config.cxx b/core/agent_config.cxx
+--- a/core/agent_config.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/agent_config.cxx (date 1776177013988)
+@@ -15,7 +15,7 @@
+
+ #include "agent_config.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <string>
+
+Index: core/sasl/error_fmt.h
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/sasl/error_fmt.h b/core/sasl/error_fmt.h
+--- a/core/sasl/error_fmt.h (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/sasl/error_fmt.h (date 1776177014029)
+@@ -19,7 +19,7 @@
+
+ #include "error.h"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::sasl::error> {
+Index: core/error_context/analytics_json.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/error_context/analytics_json.hxx b/core/error_context/analytics_json.hxx
+--- a/core/error_context/analytics_json.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/error_context/analytics_json.hxx (date 1776177013858)
+@@ -22,7 +22,7 @@
+
+ #include <couchbase/error_codes.hxx>
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/forward.hpp>
+ #include <tao/json/value.hpp>
+
+Index: core/utils/join_strings.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/utils/join_strings.hxx b/core/utils/join_strings.hxx
+--- a/core/utils/join_strings.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/utils/join_strings.hxx (date 1776177014008)
+@@ -17,7 +17,7 @@
+
+ #pragma once
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <sstream>
+
+Index: core/operations/management/analytics_link_disconnect.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_link_disconnect.cxx b/core/operations/management/analytics_link_disconnect.cxx
+--- a/core/operations/management/analytics_link_disconnect.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_link_disconnect.cxx (date 1776177013952)
+@@ -21,7 +21,7 @@
+ #include "core/utils/name_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/utils/url_codec.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/utils/url_codec.cxx b/core/utils/url_codec.cxx
+--- a/core/utils/url_codec.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/utils/url_codec.cxx (date 1776177013904)
+@@ -17,7 +17,7 @@
+
+ #include "url_codec.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <cctype>
+ #include <climits>
+Index: core/operations/management/group_get.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/group_get.cxx b/core/operations/management/group_get.cxx
+--- a/core/operations/management/group_get.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/group_get.cxx (date 1776177013930)
+@@ -21,7 +21,7 @@
+ #include "core/utils/json.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/scope_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/scope_drop.cxx b/core/operations/management/scope_drop.cxx
+--- a/core/operations/management/scope_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/scope_drop.cxx (date 1776177014027)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include <regex>
+Index: test/test_unit_metrics.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/test/test_unit_metrics.cxx b/test/test_unit_metrics.cxx
+--- a/test/test_unit_metrics.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/test/test_unit_metrics.cxx (date 1776177014130)
+@@ -21,7 +21,7 @@
+ #include "core/tracing/constants.hxx"
+
+ #include <couchbase/error_codes.hxx>
+-#include <spdlog/fmt/bundled/printf.h>
++#include <fmt/printf.h>
+
+ TEST_CASE("unit: metric attributes encoding", "[unit]")
+ {
+Index: core/design_document_namespace_fmt.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/design_document_namespace_fmt.hxx b/core/design_document_namespace_fmt.hxx
+--- a/core/design_document_namespace_fmt.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/design_document_namespace_fmt.hxx (date 1776177013902)
+@@ -19,7 +19,7 @@
+
+ #include "design_document_namespace.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ template<>
+ struct fmt::formatter<couchbase::core::design_document_namespace> {
+Index: core/operations/management/collection_update.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/collection_update.cxx b/core/operations/management/collection_update.cxx
+--- a/core/operations/management/collection_update.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/collection_update.cxx (date 1776177014115)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include <regex>
+Index: core/operations/management/search_index_analyze_document.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_analyze_document.cxx b/core/operations/management/search_index_analyze_document.cxx
+--- a/core/operations/management/search_index_analyze_document.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_analyze_document.cxx (date 1776177013932)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/view_index_upsert.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/view_index_upsert.cxx b/core/operations/management/view_index_upsert.cxx
+--- a/core/operations/management/view_index_upsert.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/view_index_upsert.cxx (date 1776177013909)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: test/test_integration_tracer.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/test/test_integration_tracer.cxx b/test/test_integration_tracer.cxx
+--- a/test/test_integration_tracer.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/test/test_integration_tracer.cxx (date 1776177013879)
+@@ -25,7 +25,7 @@
+
+ #include <catch2/catch_message.hpp>
+ #include <catch2/generators/catch_generators.hpp>
+-#include <spdlog/fmt/bundled/ranges.h>
++#include <fmt/ranges.h>
+
+ class test_span : public couchbase::tracing::request_span
+ {
+Index: test/test_integration_examples.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/test/test_integration_examples.cxx b/test/test_integration_examples.cxx
+--- a/test/test_integration_examples.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/test/test_integration_examples.cxx (date 1776177013961)
+@@ -34,8 +34,8 @@
+ #include <couchbase/query_string_query.hxx>
+ #include <couchbase/term_facet.hxx>
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/ranges.h>
++#include <fmt/chrono.h>
++#include <fmt/ranges.h>
+ #include <tao/json.hpp>
+ #include <tao/json/contrib/traits.hpp>
+
+Index: core/io/http_parser.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/io/http_parser.cxx b/core/io/http_parser.cxx
+--- a/core/io/http_parser.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/io/http_parser.cxx (date 1776177013973)
+@@ -18,7 +18,7 @@
+ #include "http_parser.hxx"
+
+ #include <llhttp.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <algorithm>
+
+Index: core/impl/crypto.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/impl/crypto.cxx b/core/impl/crypto.cxx
+--- a/core/impl/crypto.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/impl/crypto.cxx (date 1776177014018)
+@@ -24,7 +24,7 @@
+ #include "core/utils/binary.hxx"
+
+ #include "include_ssl/rand.h"
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/format.h>
+
+ namespace couchbase::crypto::internal
+ {
+Index: core/operations/management/bucket_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/bucket_drop.cxx b/core/operations/management/bucket_drop.cxx
+--- a/core/operations/management/bucket_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/bucket_drop.cxx (date 1776177014080)
+@@ -20,7 +20,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ namespace couchbase::core::operations::management
+ {
+Index: core/operations/management/search_index_control_query.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_control_query.cxx b/core/operations/management/search_index_control_query.cxx
+--- a/core/operations/management/search_index_control_query.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_control_query.cxx (date 1776177013839)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/utils/keyspace.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/utils/keyspace.hxx b/core/utils/keyspace.hxx
+--- a/core/utils/keyspace.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/utils/keyspace.hxx (date 1776177013950)
+@@ -17,7 +17,7 @@
+
+ #pragma once
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <string>
+
+Index: core/io/config_tracker.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/io/config_tracker.cxx b/core/io/config_tracker.cxx
+--- a/core/io/config_tracker.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/io/config_tracker.cxx (date 1776177013975)
+@@ -29,7 +29,7 @@
+ #include "mcbp_session.hxx"
+
+ #include <asio/steady_timer.hpp>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+
+ namespace couchbase::core::io
+ {
+Index: core/io/mcbp_command.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/io/mcbp_command.hxx b/core/io/mcbp_command.hxx
+--- a/core/io/mcbp_command.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/io/mcbp_command.hxx (date 1776177013883)
+@@ -38,7 +38,7 @@
+ #include <couchbase/error_codes.hxx>
+
+ #include <asio/steady_timer.hpp>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+
+ #include <functional>
+ #include <utility>
+Index: core/operations/management/collection_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/collection_drop.cxx b/core/operations/management/collection_drop.cxx
+--- a/core/operations/management/collection_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/collection_drop.cxx (date 1776177014146)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ #include <regex>
+Index: core/io/http_session.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/io/http_session.hxx b/core/io/http_session.hxx
+--- a/core/io/http_session.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/io/http_session.hxx (date 1776177014107)
+@@ -36,7 +36,7 @@
+ #include "core/tls_context_provider.hxx"
+
+ #include <asio.hpp>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+
+ #include <memory>
+ #include <optional>
+Index: core/operations/management/eventing_get_function.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/eventing_get_function.cxx b/core/operations/management/eventing_get_function.cxx
+--- a/core/operations/management/eventing_get_function.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/eventing_get_function.cxx (date 1776177013833)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: tools/config.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/config.cxx b/tools/config.cxx
+--- a/tools/config.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/config.cxx (date 1776177014040)
+@@ -26,7 +26,7 @@
+
+ #include <couchbase/cluster.hxx>
+
+-#include <spdlog/fmt/bundled/format.h>
++#include <fmt/format.h>
+ #include <tao/json.hpp>
+ #include <tao/json/from_string.hpp>
+
+Index: core/operations/management/analytics_link_drop.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/analytics_link_drop.cxx b/core/operations/management/analytics_link_drop.cxx
+--- a/core/operations/management/analytics_link_drop.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/analytics_link_drop.cxx (date 1776177014134)
+@@ -21,7 +21,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: tools/remove.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/remove.cxx b/tools/remove.cxx
+--- a/tools/remove.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/remove.cxx (date 1776177013881)
+@@ -24,7 +24,7 @@
+ #include <couchbase/codec/tao_json_serializer.hxx>
+
+ #include <spdlog/fmt/bin_to_hex.h>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+ #include <tao/json.hpp>
+
+ #include <couchbase/fmt/cas.hxx>
+Index: core/logger/logger.hxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/logger/logger.hxx b/core/logger/logger.hxx
+--- a/core/logger/logger.hxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/logger/logger.hxx (date 1776177013845)
+@@ -29,7 +29,7 @@
+
+ #include "level.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <spdlog/fwd.h>
+
+ #include <memory>
+Index: tools/sysinfo.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/sysinfo.cxx b/tools/sysinfo.cxx
+--- a/tools/sysinfo.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/sysinfo.cxx (date 1776177014060)
+@@ -19,8 +19,8 @@
+
+ #include "system_metrics_reporter.hxx"
+
+-#include <spdlog/fmt/bundled/chrono.h>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/chrono.h>
++#include <fmt/core.h>
+ #include <tao/json.hpp>
+
+ #include <array>
+Index: core/io/dns_client.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/io/dns_client.cxx b/core/io/dns_client.cxx
+--- a/core/io/dns_client.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/io/dns_client.cxx (date 1776177013862)
+@@ -28,7 +28,7 @@
+ #include <asio/read.hpp>
+ #include <asio/write.hpp>
+ #include <spdlog/fmt/bin_to_hex.h>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+
+ #include <chrono>
+ #include <memory>
+Index: tools/key_generator.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/key_generator.cxx b/tools/key_generator.cxx
+--- a/tools/key_generator.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/key_generator.cxx (date 1776177013991)
+@@ -20,7 +20,7 @@
+ #include "core/topology/configuration.hxx"
+
+ #include <optional>
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+
+ #include <gsl/assert>
+ #include <gsl/span>
+Index: tools/upsert.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/tools/upsert.cxx b/tools/upsert.cxx
+--- a/tools/upsert.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/tools/upsert.cxx (date 1776177013938)
+@@ -27,7 +27,7 @@
+ #include <couchbase/replicate_to.hxx>
+
+ #include <spdlog/fmt/bin_to_hex.h>
+-#include <spdlog/fmt/bundled/chrono.h>
++#include <fmt/chrono.h>
+ #include <tao/json.hpp>
+
+ #include <couchbase/fmt/cas.hxx>
+Index: core/operations/management/eventing_deploy_function.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/eventing_deploy_function.cxx b/core/operations/management/eventing_deploy_function.cxx
+--- a/core/operations/management/eventing_deploy_function.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/eventing_deploy_function.cxx (date 1776177014054)
+@@ -20,7 +20,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/search_index_get_all.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/search_index_get_all.cxx b/core/operations/management/search_index_get_all.cxx
+--- a/core/operations/management/search_index_get_all.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/search_index_get_all.cxx (date 1776177014117)
+@@ -22,7 +22,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
+Index: core/operations/management/eventing_undeploy_function.cxx
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/core/operations/management/eventing_undeploy_function.cxx b/core/operations/management/eventing_undeploy_function.cxx
+--- a/core/operations/management/eventing_undeploy_function.cxx (revision fb3f860843c3ca594f2676225dcc95ed8d6c1375)
++++ b/core/operations/management/eventing_undeploy_function.cxx (date 1776177013979)
+@@ -20,7 +20,7 @@
+ #include "core/utils/url_codec.hxx"
+ #include "error_utils.hxx"
+
+-#include <spdlog/fmt/bundled/core.h>
++#include <fmt/core.h>
+ #include <tao/json/value.hpp>
+
+ namespace couchbase::core::operations::management
diff --git a/thirdparty/libstdc++/avoid_bogus_Wrestrict_PR105651.patch b/thirdparty/libstdc++/avoid_bogus_Wrestrict_PR105651.patch
deleted file mode 100644
index 8ac0a762b..000000000
--- a/thirdparty/libstdc++/avoid_bogus_Wrestrict_PR105651.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 50dd920299f8f905f47475bf77c299d9a84512b8 Mon Sep 17 00:00:00 2001
-From: Jason Merrill <ja...@redhat.com>
-Date: Thu, 18 Aug 2022 23:53:16 -0400
-Subject: [PATCH] libstdc++: avoid bogus -Wrestrict [PR105651]
-To: gcc-patches@gcc.gnu.org
-
- PR tree-optimization/105651
-
-libstdc++-v3/ChangeLog:
-
- * include/bits/basic_string.tcc (_M_replace): Add an assert
- to avoid -Wrestrict false positive.
----
- libstdc++-v3/include/bits/basic_string.tcc | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
-index 4563c61429a..0d5c4d6191e 100644
---- a/libstdc++-v3/include/bits/basic_string.tcc
-+++ b/libstdc++-v3/include/bits/basic_string.tcc
-@@ -529,6 +529,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
- {
- const size_type __nleft = (__p + __len1) - __s;
- this->_S_move(__p, __s, __nleft);
-+ // Tell the middle-end that the copy can't overlap
-+ // (PR105651).
-+ if (__len2 < __nleft) __builtin_unreachable ();
- this->_S_copy(__p + __nleft, __p + __len2,
- __len2 - __nleft);
- }
---
-2.31.1