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:
@@ -4,8 +4,7 @@
|
||||
#include <spinscale/puppetApplication.h>
|
||||
#include <spinscale/component.h>
|
||||
#include <mindComponent.h>
|
||||
#include <functional>
|
||||
#include <spinscale/callback.h>
|
||||
#include <body/bodyThread.h>
|
||||
|
||||
namespace smo {
|
||||
|
||||
@@ -20,16 +19,11 @@ public:
|
||||
Body(Mind &parent, const std::shared_ptr<sscl::PuppetThread> &thread);
|
||||
~Body() = default;
|
||||
|
||||
typedef std::function<void(bool)> bodyLifetimeMgmtOpCbFn;
|
||||
void initializeReq(sscl::Callback<bodyLifetimeMgmtOpCbFn> callback);
|
||||
void finalizeReq(sscl::Callback<bodyLifetimeMgmtOpCbFn> callback);
|
||||
|
||||
private:
|
||||
class InitializeReq;
|
||||
class FinalizeReq;
|
||||
BodyViralPostingInvoker<bool> initializeCReq();
|
||||
BodyViralPostingInvoker<bool> finalizeCReq();
|
||||
};
|
||||
|
||||
} // namespace body
|
||||
} // namespace smo
|
||||
|
||||
#endif // _BODY_COMPONENT_H
|
||||
#endif // _BODY_COMPONENT_H
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
#ifndef SMO_BODY_THREAD_H
|
||||
#define SMO_BODY_THREAD_H
|
||||
|
||||
#include <boost/asio/io_service.hpp>
|
||||
#include <spinscale/co/invokers.h>
|
||||
#include <spinscale/co/postingPromise.h>
|
||||
|
||||
namespace smo {
|
||||
namespace body {
|
||||
|
||||
struct BodyThreadTag
|
||||
{
|
||||
static boost::asio::io_service &io_service();
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
using BodyPostingPromise =
|
||||
sscl::co::TaggedPostingPromise<T, BodyThreadTag>;
|
||||
|
||||
using BodyNonViralPostingInvoker =
|
||||
sscl::co::NonViralPostingInvoker<BodyPostingPromise>;
|
||||
|
||||
template <typename T>
|
||||
using BodyViralPostingInvoker =
|
||||
sscl::co::ViralPostingInvoker<BodyPostingPromise, T>;
|
||||
|
||||
} // namespace body
|
||||
} // namespace smo
|
||||
|
||||
#endif // SMO_BODY_THREAD_H
|
||||
Reference in New Issue
Block a user