Asnc: LockSet is now a member of serializedAsyncCont; not base class

We needed to pass in a ref to the parent SerializedAsyncContin, so
we had to make it a member var instead of a base class.
This commit is contained in:
2025-09-19 01:32:52 -04:00
parent dd9ce63cb8
commit 4b0e832e27
+6 -3
View File
@@ -106,7 +106,7 @@ public:
template <class OriginalCbFnT> template <class OriginalCbFnT>
class SerializedAsynchronousContinuation class SerializedAsynchronousContinuation
: public PostedAsynchronousContinuation<OriginalCbFnT>, public LockSet : public PostedAsynchronousContinuation<OriginalCbFnT>
{ {
public: public:
SerializedAsynchronousContinuation( SerializedAsynchronousContinuation(
@@ -114,16 +114,19 @@ public:
OriginalCbFnT originalCbFn, OriginalCbFnT originalCbFn,
std::vector<std::reference_wrapper<SpinLock>> requiredLocks = {}) std::vector<std::reference_wrapper<SpinLock>> requiredLocks = {})
: PostedAsynchronousContinuation<OriginalCbFnT>(caller, originalCbFn), : PostedAsynchronousContinuation<OriginalCbFnT>(caller, originalCbFn),
LockSet(std::move(requiredLocks)) requiredLocks(*this, std::move(requiredLocks))
{} {}
template<typename... Args> template<typename... Args>
void callOriginalCb(Args&&... args) void callOriginalCb(Args&&... args)
{ {
LockSet::release(); requiredLocks.release();
PostedAsynchronousContinuation<OriginalCbFnT>::callOriginalCb( PostedAsynchronousContinuation<OriginalCbFnT>::callOriginalCb(
std::forward<Args>(args)...); std::forward<Args>(args)...);
} }
public:
LockSet<OriginalCbFnT> requiredLocks;
}; };
} // namespace smo } // namespace smo