mirror of
https://github.com/matrix-construct/construct
synced 2024-11-17 15:30:52 +01:00
ircd::ctx: Add use_future_t; minor cleanup.
This commit is contained in:
parent
0cafcd7b84
commit
4fa7ad9286
2 changed files with 12 additions and 5 deletions
|
@ -48,15 +48,17 @@
|
||||||
///
|
///
|
||||||
namespace ircd::ctx
|
namespace ircd::ctx
|
||||||
{
|
{
|
||||||
IRCD_EXCEPTION(ircd::error, error)
|
|
||||||
IRCD_EXCEPTION(error, interrupted)
|
|
||||||
IRCD_EXCEPTION(error, timeout)
|
|
||||||
|
|
||||||
using std::chrono::steady_clock;
|
using std::chrono::steady_clock;
|
||||||
using time_point = steady_clock::time_point;
|
using time_point = steady_clock::time_point;
|
||||||
|
|
||||||
struct ctx;
|
struct ctx;
|
||||||
|
|
||||||
|
IRCD_EXCEPTION(ircd::error, error)
|
||||||
|
IRCD_EXCEPTION(error, interrupted)
|
||||||
|
IRCD_EXCEPTION(error, timeout)
|
||||||
|
|
||||||
|
IRCD_OVERLOAD(threadsafe)
|
||||||
|
|
||||||
const uint64_t &id(const ctx &); // Unique ID for context
|
const uint64_t &id(const ctx &); // Unique ID for context
|
||||||
string_view name(const ctx &); // User's optional label for context
|
string_view name(const ctx &); // User's optional label for context
|
||||||
const int64_t ¬es(const ctx &); // Peeks at internal semaphore count
|
const int64_t ¬es(const ctx &); // Peeks at internal semaphore count
|
||||||
|
@ -64,7 +66,6 @@ namespace ircd::ctx
|
||||||
bool finished(const ctx &); // Context function returned (or exception).
|
bool finished(const ctx &); // Context function returned (or exception).
|
||||||
bool started(const ctx &); // Context was ever entered.
|
bool started(const ctx &); // Context was ever entered.
|
||||||
|
|
||||||
IRCD_OVERLOAD(threadsafe)
|
|
||||||
void interrupt(ctx &); // Interrupt the context for termination.
|
void interrupt(ctx &); // Interrupt the context for termination.
|
||||||
void signal(ctx &, std::function<void ()>); // Post function to context strand
|
void signal(ctx &, std::function<void ()>); // Post function to context strand
|
||||||
void notify(ctx &, threadsafe_t); // Notify context with threadsafety.
|
void notify(ctx &, threadsafe_t); // Notify context with threadsafety.
|
||||||
|
@ -124,6 +125,7 @@ namespace ircd::ctx { inline namespace this_ctx
|
||||||
#include "ole.h"
|
#include "ole.h"
|
||||||
#include "fault.h"
|
#include "fault.h"
|
||||||
|
|
||||||
|
// Exports to ircd::
|
||||||
namespace ircd
|
namespace ircd
|
||||||
{
|
{
|
||||||
//using yield = boost::asio::yield_context;
|
//using yield = boost::asio::yield_context;
|
||||||
|
@ -133,6 +135,9 @@ namespace ircd
|
||||||
|
|
||||||
using ctx::promise;
|
using ctx::promise;
|
||||||
using ctx::future;
|
using ctx::future;
|
||||||
|
|
||||||
|
using ctx::use_future_t;
|
||||||
|
using ctx::use_future;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An instance of critical_assertion detects an attempt to context switch.
|
/// An instance of critical_assertion detects an attempt to context switch.
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
|
|
||||||
namespace ircd::ctx
|
namespace ircd::ctx
|
||||||
{
|
{
|
||||||
|
IRCD_OVERLOAD(use_future)
|
||||||
|
|
||||||
template<class T = void> class future;
|
template<class T = void> class future;
|
||||||
template<> class future<void>;
|
template<> class future<void>;
|
||||||
template<class... T> struct scoped_future;
|
template<class... T> struct scoped_future;
|
||||||
|
|
Loading…
Reference in a new issue