#ifndef SMO_WORLD_THREAD_H
#define SMO_WORLD_THREAD_H

#include <boost/asio/io_context.hpp>
#include <spinscale/co/invokers.h>
#include <spinscale/co/postingPromise.h>

namespace smo {

struct WorldThreadTag
{
	static boost::asio::io_context &io_context();
};

template <typename T>
using WorldPostingPromise =
	sscl::co::TaggedPostingPromise<T, WorldThreadTag>;

template <typename T>
using WorldViralPostingInvoker =
	sscl::co::ViralPostingInvoker<WorldPostingPromise, T>;

} // namespace smo

#endif // SMO_WORLD_THREAD_H
