diff --git a/src/GeniusSDK.cpp b/src/GeniusSDK.cpp
index 79f7140..c0d4872 100644
--- a/src/GeniusSDK.cpp
+++ b/src/GeniusSDK.cpp
@@ -30,6 +30,7 @@
#include
#include
+#include
namespace
{
@@ -216,7 +217,7 @@ const char *GeniusSDKInit( const char *base_path, bool autodht, bool process, ui
{
return SDKInitHelper( base_path,
[&]( const auto &config )
- { return sgns::GeniusNode::New( config, autodht, process, baseport, is_full_node ); } );
+ { return sgns::GeniusNode::New( config, autodht, baseport, is_full_node ); } );
}
const char *GeniusSDKInitWithKey( const char *base_path,
@@ -232,7 +233,6 @@ const char *GeniusSDKInitWithKey( const char *base_path,
return sgns::GeniusNode::NewFromPrivateKey( config,
eth_private_key,
autodht,
- process,
baseport,
is_full_node );
} );
@@ -242,7 +242,6 @@ const char *GeniusSDKInitWithKeyAndDevConfig( const char *base_path,
const char *dev_config,
const char *eth_private_key,
bool autodht,
- bool process,
uint16_t baseport,
bool is_full_node )
{
@@ -272,7 +271,6 @@ const char *GeniusSDKInitWithKeyAndDevConfig( const char *base_path,
GeniusNodeInstance = sgns::GeniusNode::NewFromPrivateKey( load_config_ret.value(),
eth_private_key,
autodht,
- process,
baseport,
is_full_node );
ret_val.append( load_config_ret.value().BaseWritePath );
@@ -290,7 +288,7 @@ const char *GeniusSDKInitWithMnemonic( const char *base_path,
return SDKInitHelper(
base_path,
[&]( const auto &config )
- { return sgns::GeniusNode::NewFromMnemonic( config, mnemonic, autodht, process, baseport, is_full_node ); } );
+ { return sgns::GeniusNode::NewFromMnemonic( config, mnemonic, autodht, baseport, is_full_node ); } );
}
const char *GeniusSDKInitMinimal( const char *base_path, const char *eth_private_key, uint16_t baseport )
@@ -875,3 +873,63 @@ GeniusProcessingStatusInfo GeniusSDKGetProcessingStatus()
result.percentage = status_info.percentage;
return result;
}
+
+const char *GeniusSDKGetMyTaskIds( uint64_t limit, uint64_t offset )
+{
+ if ( !GeniusNodeInstance )
+ {
+ return nullptr;
+ }
+
+ auto task_ids = GeniusNodeInstance->GetMyTaskIds( limit, offset );
+
+ if ( task_ids.empty() )
+ {
+ char *ret = reinterpret_cast( malloc( 1 ) );
+ ret[0] = '\0';
+ return ret;
+ }
+
+ // Calculate total size: each ID + '\n' separator, last entry gets '\0' instead
+ size_t total_size = 0;
+ for ( const auto &id : task_ids )
+ {
+ total_size += id.size() + 1; // id + separator
+ }
+
+ char *ret = reinterpret_cast( malloc( total_size ) );
+ char *dest = ret;
+ for ( size_t i = 0; i < task_ids.size(); ++i )
+ {
+ memcpy( dest, task_ids[i].data(), task_ids[i].size() );
+ dest += task_ids[i].size();
+ *dest++ = ( i + 1 < task_ids.size() ) ? '\n' : '\0';
+ }
+
+ return ret;
+}
+
+GeniusArray GeniusSDKGetTaskResult( const char *task_id )
+{
+ if ( !GeniusNodeInstance || task_id == nullptr )
+ {
+ return { 0, nullptr };
+ }
+
+ auto result = GeniusNodeInstance->GetTaskResult( std::string( task_id ) );
+ if ( !result.has_value() )
+ {
+ return { 0, nullptr };
+ }
+
+ std::string serialized;
+ if ( !result.value().SerializeToString( &serialized ) )
+ {
+ return { 0, nullptr };
+ }
+
+ uint8_t *buf = reinterpret_cast( malloc( serialized.size() ) );
+ memcpy( buf, serialized.data(), serialized.size() );
+
+ return { serialized.size(), buf };
+}
diff --git a/src/GeniusSDK.h b/src/GeniusSDK.h
index c51d0cf..2619b99 100644
--- a/src/GeniusSDK.h
+++ b/src/GeniusSDK.h
@@ -526,6 +526,24 @@ GNUS_VISIBILITY_DEFAULT GeniusTransactionStatus_t GeniusSDKGetTransactionStatus(
*/
GNUS_VISIBILITY_DEFAULT GeniusProcessingStatusInfo GeniusSDKGetProcessingStatus();
+/**
+ * @brief Returns the task IDs of jobs submitted by the active account.
+ * @param[in] limit Maximum number of task IDs to return.
+ * @param[in] offset Number of task IDs to skip from the end of the list.
+ * @return A null-terminated string containing newline-separated task IDs,
+ * or null if the SDK is not initialized. Must be freed with GeniusSDKFree().
+ */
+GNUS_VISIBILITY_DEFAULT const char *GeniusSDKGetMyTaskIds( uint64_t limit, uint64_t offset );
+
+/**
+ * @brief Retrieves the completed result for a specific task.
+ * @param[in] task_id A null-terminated string representing the task ID (ipfs_block_id).
+ * @return A GeniusArray containing the serialized protobuf bytes of TaskResult,
+ * or {0, nullptr} if the task is not found or SDK is not initialized.
+ * On success, the ptr field must be freed with GeniusSDKFree().
+ */
+GNUS_VISIBILITY_DEFAULT GeniusArray GeniusSDKGetTaskResult( const char *task_id );
+
GNUS_EXPORT_END
#endif