IoUringAssmEngn: assemFrameReq: exit responsively on stop()
This commit is contained in:
@@ -418,6 +418,11 @@ public:
|
|||||||
timerFired(false), handlerExecuted(false)
|
timerFired(false), handlerExecuted(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
void callOriginalCallback(bool success, AsynchronousLoop loop)
|
||||||
|
{
|
||||||
|
callOriginalCb(success, loop);
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void assembleFrameReq1_posted(
|
void assembleFrameReq1_posted(
|
||||||
std::shared_ptr<AssembleFrameReq> context)
|
std::shared_ptr<AssembleFrameReq> context)
|
||||||
@@ -488,6 +493,13 @@ public:
|
|||||||
std::shared_ptr<AssembleFrameReq> context,
|
std::shared_ptr<AssembleFrameReq> context,
|
||||||
void *user_data, int cqe_result)
|
void *user_data, int cqe_result)
|
||||||
{
|
{
|
||||||
|
if (!context->engine.isAssembling)
|
||||||
|
{
|
||||||
|
context->loop.setRemainingIterationsToFailure();
|
||||||
|
context->callOriginalCallback(false, context->loop);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Extract index from user_data and mark slot as assembled if successful
|
// Extract index from user_data and mark slot as assembled if successful
|
||||||
size_t index = reinterpret_cast<size_t>(user_data);
|
size_t index = reinterpret_cast<size_t>(user_data);
|
||||||
bool success = (cqe_result >= 0);
|
bool success = (cqe_result >= 0);
|
||||||
@@ -578,11 +590,6 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void callOriginalCallback(bool success, AsynchronousLoop loop)
|
|
||||||
{
|
|
||||||
callOriginalCb(success, loop);
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
IoUringAssemblyEngine& engine;
|
IoUringAssemblyEngine& engine;
|
||||||
AsynchronousLoop loop;
|
AsynchronousLoop loop;
|
||||||
|
|||||||
Reference in New Issue
Block a user