src/processing/impl/processing_core_impl.hpp
Namespaces
Classes
Functions
Functions Documentation
function OUTCOME_HPP_DECLARE_ERROR_2
OUTCOME_HPP_DECLARE_ERROR_2(
sgns::processing ,
ProcessingCoreImpl::Error
)
Source code
#ifndef GRPC_FOR_SUPERGENIUS_PROCESSING_CORE_IMPL_HPP
#define GRPC_FOR_SUPERGENIUS_PROCESSING_CORE_IMPL_HPP
#include <cmath>
#include <memory>
#include <iostream>
#include <utility>
#include <libp2p/log/configurator.hpp>
#include <libp2p/log/logger.hpp>
#include <libp2p/multi/multibase_codec/multibase_codec_impl.hpp>
#include <libp2p/multi/content_identifier_codec.hpp>
#include <libp2p/injector/host_injector.hpp>
#include <libp2p/injector/kademlia_injector.hpp>
#include "processing/processing_core.hpp"
#include "crdt/globaldb/globaldb.hpp"
#include "account/TokenID.hpp"
// Forward declaration
namespace sgns::sgprocessing {
class ProcessingManager;
}
namespace sgns::processing
{
class ProcessingCoreImpl : public ProcessingCore
{
public:
enum class Error {
MAX_NUMBER_SUBTASKS = 1,
GLOBALDB_READ_ERROR,
NO_BUFFER_FROM_JOB_DATA,
};
ProcessingCoreImpl(
std::shared_ptr<sgns::crdt::GlobalDB> db,
size_t maximalProcessingSubTaskCount,
TokenID tokenId)
: m_db(std::move(db))
, m_tokenId(std::move(tokenId))
, m_maximalProcessingSubTaskCount(maximalProcessingSubTaskCount)
, m_processingSubTaskCount(0)
{
}
~ProcessingCoreImpl()
{
}
outcome::result<SGProcessing::SubTaskResult> ProcessSubTask(
const SGProcessing::SubTask& subTask, uint32_t initialHashCode) override;
// Register an available processor.
//void RegisterProcessorFactory(const std::string& name, std::function<std::unique_ptr<ProcessingProcessor>()> factoryFunction) {
// m_processorFactories[name] = std::move( factoryFunction );
//}
// Set the current processor by name.
// bool SetProcessorByName(const std::string& name) {
// auto factoryFunction = m_processorFactories.find(name);
// if (factoryFunction != m_processorFactories.end()) {
// m_processor = factoryFunction->second();
// return true;
// }
// std::cerr << "Unknown processor name: " << name << std::endl;
// return false;
// }
//bool CheckRegisteredProcessor(const std::string& name)
// {
// auto factoryFunction = m_processorFactories.find(name);
// if (factoryFunction == m_processorFactories.end())
// {
// return false;
// }
// else
// {
// return true;
// }
// }
// Get processing type from json data to set processor.
// bool SetProcessingTypeFromJson(std::string jsondata) override;
float GetProgress() const override;
std::vector<size_t> m_chunkResulHashes;
std::vector<size_t> m_validationChunkHashes;
private:
std::shared_ptr<sgns::crdt::GlobalDB> m_db;
TokenID m_tokenId;
//std::unique_ptr<ProcessingProcessor> m_processor;
//std::unordered_map<std::string, std::function<std::unique_ptr<ProcessingProcessor>()>> m_processorFactories;
//size_t m_subTaskProcessingTime;
size_t m_maximalProcessingSubTaskCount;
std::mutex m_subTaskCountMutex;
size_t m_processingSubTaskCount;
mutable std::shared_ptr<sgprocessing::ProcessingManager> m_currentProcessingManager;
std::map<std::string, std::shared_ptr<std::pair<std::shared_ptr<std::vector<char>>, std::shared_ptr<std::vector<char>>>>> cidData_;
};
}
OUTCOME_HPP_DECLARE_ERROR_2(sgns::processing, ProcessingCoreImpl::Error);
#endif
Updated on 2026-03-04 at 13:10:44 -0800