Libspinscale: Initial top-level SMO port to coroutine framework

We haven't ported everything. Just the top-level methods. We'll
dig in to the leaf stuff later. Surprisingly, this all went without
any real difficulties.

Runs like a charm on first try.
This commit is contained in:
2026-05-24 16:12:29 -04:00
parent c539e6e924
commit cde2737876
44 changed files with 1296 additions and 1530 deletions
@@ -17,11 +17,11 @@
#include <boost/system/error_code.hpp>
#include <livoxProto1/device.h>
#include <livoxProto1/livoxProto1.h>
#include <spinscale/asynchronousContinuation.h>
#include <spinscale/cps/asynchronousContinuation.h>
#include <spinscale/asynchronousLoop.h>
#include <spinscale/asynchronousBridge.h>
#include <spinscale/callback.h>
#include <spinscale/callableTracer.h>
#include <spinscale/cps/asynchronousBridge.h>
#include <spinscale/cps/callback.h>
#include <spinscale/cps/callableTracer.h>
#include <spinscale/spinLock.h>
#include "ioUringAssemblyEngine.h"
#include "pcloudStimulusProducer.h"
@@ -175,7 +175,7 @@ void IoUringAssemblyEngine::finalize()
{
auto& ioService = smoHooksPtr->ComponentThread_getSelf()->getIoService();
sscl::AsynchronousBridge bridge(ioService);
sscl::cps::AsynchronousBridge bridge(ioService);
boost::asio::deadline_timer timeoutTimer(ioService);
/** EXPLANATION:
@@ -420,15 +420,15 @@ cleanup_eventfd:
// Continuation class for assembleFrameReq
class IoUringAssemblyEngine::AssembleFrameReq
: public sscl::PostedAsynchronousContinuation<
: public sscl::cps::PostedAsynchronousContinuation<
IoUringAssemblyEngine::assembleFrameReqCbFn>
{
public:
AssembleFrameReq(
IoUringAssemblyEngine& engine_,
const std::shared_ptr<sscl::ComponentThread>& caller,
sscl::Callback<IoUringAssemblyEngine::assembleFrameReqCbFn> cb)
: sscl::PostedAsynchronousContinuation<
sscl::cps::Callback<IoUringAssemblyEngine::assembleFrameReqCbFn> cb)
: sscl::cps::PostedAsynchronousContinuation<
IoUringAssemblyEngine::assembleFrameReqCbFn>(caller, cb),
engine(engine_),
loop(engine_.frameAssemblyDesc->numSlots),
@@ -635,7 +635,7 @@ public:
};
void IoUringAssemblyEngine::assembleFrameReq(
sscl::Callback<assembleFrameReqCbFn> cb)
sscl::cps::Callback<assembleFrameReqCbFn> cb)
{
{
sscl::SpinLock::Guard lock(shouldAcceptRequestsLock);