/*
* Copyright (C) 2024 Intel Corporation. All rights reserved.
* Authors:
* Gustavo A Espinoza <[email protected]>
* <[email protected]>
*
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include <qat/cpa.h>
#include <qat/icp_sal_poll.h>
#include "qat_task.hpp"
namespace qat
{
QATTask::QATTask(std::shared_ptr<Instance> &qat_instance,
std::unique_ptr<IOBuffers> &&buffers,
std::unique_ptr<CpaDcRqResults> &&dc_results):
qat_instance_(qat_instance),
io_buffers_(std::move(buffers)),
dc_results_(std::move(dc_results)),
completed_(false)
{
}
void QATTask::WaitCompletion()
{
if (completed_) {
return;
}
while (!completed_) {
icp_sal_DcPollInstance(qat_instance_->GetHandle(), 0);
}
}
IOBuffers *QATTask::GetBuffers()
{
return io_buffers_.get();
}
CpaDcRqResults *QATTask::GetResults()
{
return dc_results_.get();
}
void dc_callback(void *callback_tag, CpaStatus status)
{
if (!callback_tag) {
return;
}
// Ugly and dangerous
QATTask* task = static_cast<QATTask*>(callback_tag);
task->completed_ = true;
}
}