This is an automated email from the ASF dual-hosted git repository. isapego pushed a commit to branch IGNITE-22478 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 866ecbbd854b312d7a0e0fbadf7918952796936a Author: Igor Sapego <[email protected]> AuthorDate: Fri Jun 28 17:31:25 2024 +0200 IGNITE-22478 Change result type --- .../platforms/cpp/ignite/client/compute/job_execution.cpp | 2 +- modules/platforms/cpp/ignite/client/compute/job_execution.h | 9 +++++---- .../cpp/ignite/client/detail/compute/job_execution_impl.cpp | 13 +++++++++---- .../cpp/ignite/client/detail/compute/job_execution_impl.h | 6 +++--- modules/platforms/cpp/ignite/common/binary_object.h | 3 ++- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/modules/platforms/cpp/ignite/client/compute/job_execution.cpp b/modules/platforms/cpp/ignite/client/compute/job_execution.cpp index 3d83e5efdb..0540544188 100644 --- a/modules/platforms/cpp/ignite/client/compute/job_execution.cpp +++ b/modules/platforms/cpp/ignite/client/compute/job_execution.cpp @@ -28,7 +28,7 @@ void job_execution::get_state_async(ignite_callback<std::optional<job_state>> ca m_impl->get_state_async(std::move(callback)); } -void job_execution::get_result_async(ignite_callback<std::optional<primitive>> callback) { +void job_execution::get_result_async(ignite_callback<std::optional<binary_object>> callback) { m_impl->get_result_async(std::move(callback)); } diff --git a/modules/platforms/cpp/ignite/client/compute/job_execution.h b/modules/platforms/cpp/ignite/client/compute/job_execution.h index 1159e05680..8ef30195fa 100644 --- a/modules/platforms/cpp/ignite/client/compute/job_execution.h +++ b/modules/platforms/cpp/ignite/client/compute/job_execution.h @@ -20,7 +20,7 @@ #include "ignite/client/compute/job_state.h" #include "ignite/common/detail/config.h" #include "ignite/common/ignite_result.h" -#include "ignite/common/primitive.h" +#include "ignite/common/binary_object.h" #include "ignite/common/uuid.h" #include <memory> @@ -96,7 +96,7 @@ public: * parallel. * @param callback Callback to be called when the operation is complete. Called with the job execution result. */ - IGNITE_API void get_result_async(ignite_callback<std::optional<primitive>> callback); + IGNITE_API void get_result_async(ignite_callback<std::optional<binary_object>> callback); /** * Gets the job execution result. @@ -105,8 +105,9 @@ public: * multiple threads. * @return The job execution result. */ - IGNITE_API std::optional<primitive> get_result() { - return sync<std::optional<primitive>>([this](auto callback) mutable { get_result_async(std::move(callback)); }); + IGNITE_API std::optional<binary_object> get_result() { + return sync<std::optional<binary_object>>( + [this](auto callback) mutable { get_result_async(std::move(callback)); }); } /** diff --git a/modules/platforms/cpp/ignite/client/detail/compute/job_execution_impl.cpp b/modules/platforms/cpp/ignite/client/detail/compute/job_execution_impl.cpp index 3679984854..4de3d1a0c7 100644 --- a/modules/platforms/cpp/ignite/client/detail/compute/job_execution_impl.cpp +++ b/modules/platforms/cpp/ignite/client/detail/compute/job_execution_impl.cpp @@ -20,7 +20,7 @@ namespace ignite::detail { -void job_execution_impl::get_result_async(ignite_callback<std::optional<primitive>> callback) { +void job_execution_impl::get_result_async(ignite_callback<std::optional<binary_object>> callback) { std::unique_lock<std::mutex> guard(m_mutex); if (m_result) { @@ -37,21 +37,26 @@ void job_execution_impl::get_result_async(ignite_callback<std::optional<primitiv if (m_result_callback) throw ignite_error("A callback for this result was already submitted"); - m_result_callback = std::make_shared<ignite_callback<std::optional<primitive>>>(std::move(callback)); + m_result_callback = std::make_shared<ignite_callback<std::optional<binary_object>>>(std::move(callback)); } } void job_execution_impl::set_result(std::optional<primitive> result) { + std::optional<binary_object> obj; + if (result) { + obj = binary_object{std::move(*result)}; + } + std::unique_lock<std::mutex> guard(m_mutex); - m_result = result; + m_result = obj; auto callback = std::move(m_result_callback); m_result_callback.reset(); guard.unlock(); if (callback) { - (*callback)({std::move(result)}); + (*callback)({std::move(obj)}); } } diff --git a/modules/platforms/cpp/ignite/client/detail/compute/job_execution_impl.h b/modules/platforms/cpp/ignite/client/detail/compute/job_execution_impl.h index 5701771371..7add7985cc 100644 --- a/modules/platforms/cpp/ignite/client/detail/compute/job_execution_impl.h +++ b/modules/platforms/cpp/ignite/client/detail/compute/job_execution_impl.h @@ -61,7 +61,7 @@ public: * parallel. * @param callback Callback to be called when the operation is complete. Called with the job execution result. */ - void get_result_async(ignite_callback<std::optional<primitive>> callback); + void get_result_async(ignite_callback<std::optional<binary_object>> callback); /** * Set result. @@ -123,13 +123,13 @@ private: std::optional<job_state> m_final_state; /** Execution result. First optional to understand if the result is available. */ - std::optional<std::optional<primitive>> m_result; + std::optional<std::optional<binary_object>> m_result; /** Error. */ std::optional<ignite_error> m_error; /** Result callback. */ - std::shared_ptr<ignite_callback<std::optional<primitive>>> m_result_callback; + std::shared_ptr<ignite_callback<std::optional<binary_object>>> m_result_callback; }; } // namespace ignite::detail diff --git a/modules/platforms/cpp/ignite/common/binary_object.h b/modules/platforms/cpp/ignite/common/binary_object.h index 80e575bf3b..619638288e 100644 --- a/modules/platforms/cpp/ignite/common/binary_object.h +++ b/modules/platforms/cpp/ignite/common/binary_object.h @@ -34,7 +34,8 @@ public: * * @param value Primitive type value. */ - binary_object(primitive value) {} // NOLINT(google-explicit-constructor) + binary_object(primitive value) // NOLINT(google-explicit-constructor) + : m_value(std::move(value)) {} /** * Get underlying primitive value.
