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.

Reply via email to