Skip to content

src/account/ProcessingTransaction.hpp

Transaction of processing data. More...

Namespaces

Name
sgns

Classes

Name
class sgns::ProcessingTransaction

Detailed Description

Transaction of processing data.

Date: 2024-03-11 Henrique A. Klein ([email protected])

Source code

#ifndef _PROCESSING_TRANSACTION_HPP_
#define _PROCESSING_TRANSACTION_HPP_
#include <string>

#include <boost/multiprecision/cpp_int.hpp>

#include "account/IGeniusTransactions.hpp"

namespace sgns
{
    using namespace boost::multiprecision;

    class ProcessingTransaction final : public IGeniusTransactions
    {
    public:
        static std::shared_ptr<ProcessingTransaction> DeSerializeByteVector( const std::vector<uint8_t> &data );

        static ProcessingTransaction New( std::string              job_id,
                                          std::vector<std::string> subtask_ids,
                                          std::vector<std::string> node_addresses,
                                          SGTransaction::DAGStruct dag );

        ~ProcessingTransaction() override = default;

        std::vector<uint8_t> SerializeByteVector() override;

        uint256_t GetJobHash() const
        {
            return job_hash_;
        }

        std::vector<std::string> GetSubtaskIDs() const
        {
            return subtask_ids_;
        }

        std::vector<std::string> GetNodeAddresses() const
        {
            return node_addresses_;
        }

        std::string GetTaskID() const
        {
            return job_id_;
        }

        std::string GetTransactionSpecificPath() const override
        {
            boost::format processing_fmt( GetType() + "/%s" );

            processing_fmt % job_id_;
            return processing_fmt.str();
        }

    private:
        ProcessingTransaction( std::string              job_id,
                               std::vector<std::string> subtask_ids,
                               std::vector<std::string> node_addresses,
                               SGTransaction::DAGStruct dag );

        std::string              job_id_;         
        uint256_t                job_hash_;       
        std::vector<std::string> subtask_ids_;    
        std::vector<std::string> node_addresses_; 

        static bool Register()
        {
            RegisterDeserializer( "process", &ProcessingTransaction::DeSerializeByteVector );
            return true;
        }

        static inline bool registered = Register();
    };
}

#endif

Updated on 2026-03-04 at 13:10:44 -0800