Skip to content

src/processing/processing_task_queue.hpp

Classes

Name
class ProcessingTaskQueue

Source code

#ifndef GRPC_FOR_SUPERGENIUS_PROCESSING_TASK_QUEUE_HPP
#define GRPC_FOR_SUPERGENIUS_PROCESSING_TASK_QUEUE_HPP

#include "processing/proto/SGProcessing.pb.h"
#include "outcome/outcome.hpp"
#include "crdt/atomic_transaction.hpp"
#include <list>

using namespace sgns;

class ProcessingTaskQueue
{
public:
    virtual ~ProcessingTaskQueue() = default;

    virtual outcome::result<void> EnqueueTask( const SGProcessing::Task               &task,
                                               const std::list<SGProcessing::SubTask> &subTasks ) = 0;

    virtual bool GetSubTasks( const std::string &taskId, std::list<SGProcessing::SubTask> &subTasks ) = 0;

    virtual outcome::result<std::pair<std::string, SGProcessing::Task>> GrabTask() = 0;

    virtual outcome::result<std::shared_ptr<crdt::AtomicTransaction>> CompleteTask(
        const std::string              &taskId,
        const SGProcessing::TaskResult &result ) = 0;

    virtual bool IsTaskCompleted( const std::string &taskId ) = 0;

    virtual void MarkTaskBad( const std::string &taskKey ) = 0;
};

#endif // GRPC_FOR_SUPERGENIUS_PROCESSING_TASK_QUEUE_HPP

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