#ifndef SMO_DIRECTOR_THREAD_H
#define SMO_DIRECTOR_THREAD_H

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

namespace smo {
namespace director {

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

template <typename T>
using DirectorPostingPromise =
	sscl::co::TaggedPostingPromise<T, DirectorThreadTag>;

template <typename T>
using DirectorViralPostingInvoker =
	sscl::co::ViralPostingInvoker<DirectorPostingPromise, T>;

} // namespace director
} // namespace smo

#endif // SMO_DIRECTOR_THREAD_H
