Commit 2d2c7014 authored by Dominik Charousset's avatar Dominik Charousset

Rename message_id::make => make_message_id

parent e65ac013
......@@ -119,7 +119,7 @@ public:
}
};
cond rc{std::move(stmt_)};
self->varargs_receive(rc, message_id::make(), std::forward<Ts>(xs)...);
self->varargs_receive(rc, make_message_id(), std::forward<Ts>(xs)...);
}
};
......@@ -146,7 +146,7 @@ public:
}
};
cond rc{*this};
self->varargs_receive(rc, message_id::make(), std::forward<Ts>(xs)...);
self->varargs_receive(rc, make_message_id(), std::forward<Ts>(xs)...);
}
};
......@@ -202,7 +202,7 @@ public:
template <class... Ts>
void receive(Ts&&... xs) {
accept_one_cond rc;
varargs_receive(rc, message_id::make(), std::forward<Ts>(xs)...);
varargs_receive(rc, make_message_id(), std::forward<Ts>(xs)...);
}
/// Receives messages for range `[begin, first)`.
......@@ -267,7 +267,7 @@ public:
do_receive_helper do_receive(Ts&&... xs) {
auto tup = std::make_tuple(std::forward<Ts>(xs)...);
auto cb = [=](receive_cond& rc) mutable {
varargs_tup_receive(rc, message_id::make(), tup);
varargs_tup_receive(rc, make_message_id(), tup);
};
return {cb};
}
......
......@@ -62,8 +62,8 @@
// CAF_PUSH_WARNINGS and CAF_POP_WARNINGS
#if defined(__clang__)
# define CAF_CLANG
# define CAF_DEPRECATED __attribute__((__deprecated__))
# define CAF_DEPRECATED_MSG(msg) __attribute__((__deprecated__(msg)))
# define CAF_DEPRECATED __attribute__((deprecated))
# define CAF_DEPRECATED_MSG(msg) __attribute__((deprecated(msg)))
# define CAF_PUSH_WARNINGS \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wall\"") \
......@@ -104,8 +104,8 @@
# endif
#elif defined(__GNUC__)
# define CAF_GCC
# define CAF_DEPRECATED __attribute__((__deprecated__))
# define CAF_DEPRECATED_MSG(msg) __attribute__((__deprecated__(msg)))
# define CAF_DEPRECATED __attribute__((deprecated))
# define CAF_DEPRECATED_MSG(msg) __attribute__((deprecated(msg)))
# define CAF_PUSH_WARNINGS
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wshadow\"") \
......
......@@ -184,7 +184,7 @@ public:
/// Sends an exit message to `dest`.
template <class ActorHandle>
void send_exit(const ActorHandle& dest, error reason) {
dest->eq_impl(message_id::make(), ctrl(), context(),
dest->eq_impl(make_message_id(), ctrl(), context(),
exit_msg{address(), std::move(reason)});
}
......
......@@ -23,6 +23,7 @@
#include <cstdint>
#include <functional>
#include "caf/config.hpp"
#include "caf/error.hpp"
#include "caf/message_priority.hpp"
......@@ -41,10 +42,18 @@ struct invalid_message_id_t {
constexpr invalid_message_id_t invalid_message_id = invalid_message_id_t{};
struct make_message_id_t;
/// Denotes whether a message is asynchronous or synchronous
/// @note Asynchronous messages always have an invalid message id.
class message_id : detail::comparable<message_id> {
public:
// -- friends ---------------------------------------------------------------
friend struct make_message_id_t;
// -- constants -------------------------------------------------------------
static constexpr uint64_t response_flag_mask = 0x8000000000000000;
static constexpr uint64_t answered_flag_mask = 0x4000000000000000;
static constexpr uint64_t high_prioity_flag_mask = 0x2000000000000000;
......@@ -116,19 +125,6 @@ public:
return value_;
}
static constexpr message_id make() {
return message_id{};
}
static constexpr message_id make(message_priority prio) {
return prio == message_priority::high ? high_prioity_flag_mask : 0;
}
template <class Int, class E = detail::enable_if_tt<std::is_integral<Int>>>
static constexpr message_id make(Int value) {
return {static_cast<uint64_t>(value)};
}
long compare(const message_id& other) const {
return (value_ == other.value_) ? 0
: (value_ < other.value_ ? -1 : 1);
......@@ -139,6 +135,12 @@ public:
return f(meta::type_name("message_id"), x.value_);
}
// -- deprecated functions ---------------------------------------------------
template <class... Ts>
static message_id make(Ts&&... xs)
CAF_DEPRECATED_MSG("use make_message_id instead");
private:
constexpr message_id(uint64_t value) : value_(value) {
// nop
......@@ -147,6 +149,35 @@ private:
uint64_t value_;
};
// -- make_message_id ----------------------------------------------------------
/// Utility class for generating a `message_id` from integer values or
/// priorities.
struct make_message_id_t {
constexpr make_message_id_t() {
// nop
}
constexpr message_id operator()(uint64_t value = 0) const {
return value;
}
constexpr message_id operator()(message_priority p) const {
return p == message_priority::high ? message_id::high_prioity_flag_mask
: 0u;
}
};
/// Generates a `message_id` from integer values or priorities.
constexpr make_message_id_t make_message_id = make_message_id_t{};
// -- deprecated functions -----------------------------------------------------
template <class... Ts>
message_id message_id::make(Ts&&... xs) {
return make_message_id(std::forward<Ts>(xs)...);
}
} // namespace caf
namespace std {
......
......@@ -78,7 +78,7 @@ public:
>::valid,
"this actor does not accept the response message");
if (dest)
dest->eq_impl(message_id::make(P), dptr()->ctrl(),
dest->eq_impl(make_message_id(P), dptr()->ctrl(),
dptr()->context(), std::forward<Ts>(xs)...);
}
......@@ -97,7 +97,7 @@ public:
>::valid,
"receiver does not accept given message");
if (dest)
dest->eq_impl(message_id::make(P), nullptr,
dest->eq_impl(make_message_id(P), nullptr,
dptr()->context(), std::forward<Ts>(xs)...);
}
......@@ -141,7 +141,7 @@ public:
if (dest) {
auto& clock = dptr()->system().clock();
auto t = clock.now() + rtime;
auto me = make_mailbox_element(dptr()->ctrl(), message_id::make(P),
auto me = make_mailbox_element(dptr()->ctrl(), make_message_id(P),
no_stages, std::forward<Ts>(xs)...);
clock.schedule_message(t, actor_cast<strong_actor_ptr>(dest),
std::move(me));
......@@ -167,7 +167,7 @@ public:
if (dest) {
auto& clock = dptr()->system().clock();
auto t = clock.now() + rtime;
auto me = make_mailbox_element(nullptr, message_id::make(P), no_stages,
auto me = make_mailbox_element(nullptr, make_message_id(P), no_stages,
std::forward<Ts>(xs)...);
clock.schedule_message(t, actor_cast<strong_actor_ptr>(dest),
std::move(me));
......
......@@ -791,7 +791,7 @@ public:
stream<T> token{sid};
auto ys = std::tuple_cat(std::forward_as_tuple(token), std::move(xs));;
next->enqueue(make_mailbox_element(
mptr->sender, ignore_mid ? message_id::make() : mptr->mid,
mptr->sender, ignore_mid ? make_message_id() : mptr->mid,
std::move(stages),
make<stream_msg::open>(
sid, address(), make_message_from_tuple(std::move(ys)),
......
......@@ -63,13 +63,13 @@ void send_as(const Source& src, const Dest& dest, Ts&&... xs) {
>::valid,
"this actor does not accept the response message");
if (dest)
dest->eq_impl(message_id::make(P), actor_cast<strong_actor_ptr>(src),
dest->eq_impl(make_message_id(P), actor_cast<strong_actor_ptr>(src),
nullptr, std::forward<Ts>(xs)...);
}
template <class Source, class Dest, class... Ts>
void unsafe_send_as(Source* src, const Dest& dest, Ts&&... xs) {
actor_cast<abstract_actor*>(dest)->eq_impl(message_id::make(), src->ctrl(),
actor_cast<abstract_actor*>(dest)->eq_impl(make_message_id(), src->ctrl(),
src->context(),
std::forward<Ts>(xs)...);
}
......@@ -103,7 +103,7 @@ void anon_send(const Dest& dest, Ts&&... xs) {
static_assert(response_type_unbox<signatures_of_t<Dest>, token>::valid,
"receiver does not accept given message");
if (dest)
dest->eq_impl(message_id::make(P), nullptr, nullptr,
dest->eq_impl(make_message_id(P), nullptr, nullptr,
std::forward<Ts>(xs)...);
}
......@@ -112,7 +112,7 @@ template <class Dest>
void anon_send_exit(const Dest& dest, exit_reason reason) {
CAF_LOG_TRACE(CAF_ARG(dest) << CAF_ARG(reason));
if (dest)
dest->enqueue(nullptr, message_id::make(),
dest->enqueue(nullptr, make_message_id(),
make_message(exit_msg{dest->address(), reason}), nullptr);
}
......
......@@ -40,7 +40,7 @@ actor_ostream::actor_ostream(scoped_actor& self)
}
actor_ostream& actor_ostream::write(std::string arg) {
printer_->enqueue(make_mailbox_element(nullptr, message_id::make(), {},
printer_->enqueue(make_mailbox_element(nullptr, make_message_id(), {},
add_atom::value, self_,
std::move(arg)),
nullptr);
......@@ -48,7 +48,7 @@ actor_ostream& actor_ostream::write(std::string arg) {
}
actor_ostream& actor_ostream::flush() {
printer_->enqueue(make_mailbox_element(nullptr, message_id::make(), {},
printer_->enqueue(make_mailbox_element(nullptr, make_message_id(), {},
flush_atom::value, self_),
nullptr);
return *this;
......@@ -58,7 +58,7 @@ void actor_ostream::redirect(abstract_actor* self, std::string fn, int flags) {
if (self == nullptr)
return;
auto pr = self->home_system().scheduler().printer();
pr->enqueue(make_mailbox_element(nullptr, message_id::make(), {},
pr->enqueue(make_mailbox_element(nullptr, make_message_id(), {},
redirect_atom::value, self->id(),
std::move(fn), flags),
nullptr);
......@@ -66,7 +66,7 @@ void actor_ostream::redirect(abstract_actor* self, std::string fn, int flags) {
void actor_ostream::redirect_all(actor_system& sys, std::string fn, int flags) {
auto pr = sys.scheduler().printer();
pr->enqueue(make_mailbox_element(nullptr, message_id::make(), {},
pr->enqueue(make_mailbox_element(nullptr, make_message_id(), {},
redirect_atom::value,
std::move(fn), flags),
nullptr);
......
......@@ -40,7 +40,7 @@ void default_attachable::actor_exited(const error& rsn, execution_unit* host) {
auto observer = actor_cast<strong_actor_ptr>(observer_);
auto observed = actor_cast<strong_actor_ptr>(observed_);
if (observer)
observer->enqueue(std::move(observed), message_id::make(),
observer->enqueue(std::move(observed), make_message_id(),
factory(actor_cast<abstract_actor*>(observed_), rsn),
host);
}
......
......@@ -157,7 +157,7 @@ void local_actor::send_exit(const actor_addr& whom, error reason) {
void local_actor::send_exit(const strong_actor_ptr& dest, error reason) {
if (!dest)
return;
dest->get()->eq_impl(message_id::make(), nullptr, context(),
dest->get()->eq_impl(make_message_id(), nullptr, context(),
exit_msg{address(), std::move(reason)});
}
......
......@@ -97,7 +97,7 @@ bool monitorable_actor::cleanup(error&& reason, execution_unit* host) {
// tell printer to purge its state for us if we ever used aout()
if (getf(abstract_actor::has_used_aout_flag)) {
auto pr = home_system().scheduler().printer();
pr->enqueue(make_mailbox_element(nullptr, message_id::make(), {},
pr->enqueue(make_mailbox_element(nullptr, make_message_id(), {},
delete_atom::value, id()),
nullptr);
}
......
......@@ -41,7 +41,7 @@ operator()(const secondary_map::value_type& x) const noexcept {
void simple_actor_clock::visitor::operator()(receive_timeout& x) {
CAF_ASSERT(x.self != nullptr);
x.self->get()->eq_impl(message_id::make(), x.self, nullptr,
x.self->get()->eq_impl(make_message_id(), x.self, nullptr,
timeout_msg{x.id});
receive_predicate pred;
thisptr->drop_lookup(x.self->get(), pred);
......@@ -59,7 +59,7 @@ void simple_actor_clock::visitor::operator()(actor_msg& x) {
}
void simple_actor_clock::visitor::operator()(group_msg& x) {
x.target->eq_impl(message_id::make(), std::move(x.sender), nullptr,
x.target->eq_impl(make_message_id(), std::move(x.sender), nullptr,
std::move(x.content));
}
......
......@@ -38,12 +38,12 @@ void stream_aborter::actor_exited(const error& rsn, execution_unit* host) {
{
if (mode_ == source_aborter)
observer->enqueue(
nullptr, message_id::make(),
nullptr, make_message_id(),
make_message(caf::make<stream_msg::forced_close>(sid_, observed_, rsn)),
host);
else
observer->enqueue(
nullptr, message_id::make(),
nullptr, make_message_id(),
make_message(caf::make<stream_msg::forced_drop>(sid_, observed_, rsn)),
host);
}
......
......@@ -49,7 +49,7 @@ behavior testee(stateful_actor<testee_state, raw_event_based_actor>* self,
[=](add_atom) {
auto n = t->now() + seconds(10);
self->state.timeout_id += 1;
auto mid = message_id::make(self->state.timeout_id).response_id();
auto mid = make_message_id(self->state.timeout_id).response_id();
t->set_request_timeout(n, self, mid);
},
[](const timeout_msg&) {
......@@ -170,7 +170,7 @@ CAF_TEST(delay_actor_message) {
auto n = t.now() + seconds(10);
auto autptr = actor_cast<strong_actor_ptr>(aut);
t.schedule_message(n, autptr,
make_mailbox_element(autptr, message_id::make(),
make_mailbox_element(autptr, make_message_id(),
no_stages, "foo"));
CAF_CHECK_EQUAL(t.schedule().size(), 1u);
CAF_CHECK_EQUAL(t.actor_lookup().size(), 0u);
......
......@@ -103,7 +103,7 @@ behavior stream_splitter(stateful_actor<stream_splitter_state>* self) {
auto sid = self->streams().begin()->first;
auto hdl = self->current_sender();
if (!self->add_sink<element_type>(
self->state.stage, sid, nullptr, hdl, no_stages, message_id::make(),
self->state.stage, sid, nullptr, hdl, no_stages, make_message_id(),
stream_priority::normal, std::make_tuple()))
return none;
self->drop_current_message_id();
......
......@@ -426,11 +426,11 @@ public:
CAF_LOG_DEBUG(CAF_ARG(forwarding_stack) << CAF_ARG(msg));
if (hdr.has(header::named_receiver_flag))
callee_.deliver(hdr.source_node, hdr.source_actor, receiver_name,
message_id::make(hdr.operation_data),
make_message_id(hdr.operation_data),
forwarding_stack, msg);
else
callee_.deliver(hdr.source_node, hdr.source_actor, hdr.dest_actor,
message_id::make(hdr.operation_data),
make_message_id(hdr.operation_data),
forwarding_stack, msg);
break;
}
......
......@@ -37,7 +37,7 @@ public:
broker_servant(handle_type x)
: hdl_(x),
value_(strong_actor_ptr{}, message_id::make(),
value_(strong_actor_ptr{}, make_message_id(),
mailbox_element::forwarding_stack{}, SysMsgType{x, {}}) {
// nop
}
......@@ -108,7 +108,7 @@ protected:
>::type
>::type;
using tmp_t = mailbox_element_vals<passiv_t>;
tmp_t tmp{strong_actor_ptr{}, message_id::make(),
tmp_t tmp{strong_actor_ptr{}, make_message_id(),
mailbox_element::forwarding_stack{}, passiv_t{hdl()}};
invoke_mailbox_element_impl(ctx, tmp);
return activity_tokens_ != size_t{0};
......
......@@ -67,7 +67,7 @@ void datagram_servant::datagram_sent(execution_unit* ctx, datagram_handle hdl,
return;
using sent_t = datagram_sent_msg;
using tmp_t = mailbox_element_vals<datagram_sent_msg>;
tmp_t tmp{strong_actor_ptr{}, message_id::make(),
tmp_t tmp{strong_actor_ptr{}, make_message_id(),
mailbox_element::forwarding_stack{},
sent_t{hdl, written, std::move(buffer)}};
invoke_mailbox_element_impl(ctx, tmp);
......
......@@ -67,7 +67,7 @@ void scribe::data_transferred(execution_unit* ctx, size_t written,
return;
using transferred_t = data_transferred_msg;
using tmp_t = mailbox_element_vals<data_transferred_msg>;
tmp_t tmp{strong_actor_ptr{}, message_id::make(),
tmp_t tmp{strong_actor_ptr{}, make_message_id(),
mailbox_element::forwarding_stack{},
transferred_t{hdl(), written, remaining}};
invoke_mailbox_element_impl(ctx, tmp);
......
......@@ -341,7 +341,7 @@ public:
auto src = actor_cast<strong_actor_ptr>(registry_->get(hdr.source_actor));
auto dest = registry_->get(hdr.dest_actor);
CAF_REQUIRE(dest);
dest->enqueue(make_mailbox_element(src, message_id::make(),
dest->enqueue(make_mailbox_element(src, make_message_id(),
std::move(stages), std::move(msg)),
nullptr);
}
......
......@@ -337,7 +337,7 @@ public:
auto src = actor_cast<strong_actor_ptr>(registry_->get(hdr.source_actor));
auto dest = registry_->get(hdr.dest_actor);
CAF_REQUIRE(dest);
dest->enqueue(make_mailbox_element(src, message_id::make(),
dest->enqueue(make_mailbox_element(src, make_message_id(),
std::move(stages), std::move(msg)),
nullptr);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment