Commit a1798bcb authored by Dominik Charousset's avatar Dominik Charousset

Add net::middleman module to the actor system

parent aa4b49d3
......@@ -117,6 +117,7 @@ class actor_system {
public:
friend class logger;
friend class io::middleman;
friend class net::middleman;
friend class abstract_actor;
/// The number of actors implictly spawned by the actor system on startup.
......@@ -151,6 +152,7 @@ public:
middleman,
opencl_manager,
openssl_manager,
network_manager,
num_ids
};
......@@ -279,6 +281,13 @@ public:
/// @throws `std::logic_error` if module is not loaded.
openssl::manager& openssl_manager() const;
/// Returns `true` if the network module is available, `false` otherwise.
bool has_network_manager() const noexcept;
/// Returns the network manager (middleman) instance.
/// @throws `std::logic_error` if module is not loaded.
net::middleman& network_manager();
/// Returns a dummy execution unit that forwards
/// everything to the scheduler.
scoped_execution_unit* dummy_execution_unit();
......
......@@ -223,6 +223,14 @@ struct header;
} // namespace io
// -- networking classes -------------------------------------------------------
namespace net {
class middleman;
} // namespace net
// -- OpenCL classes -----------------------------------------------------------
namespace opencl {
......
......@@ -208,6 +208,8 @@ const char* actor_system::module::name() const noexcept {
return "OpenCL Manager";
case openssl_manager:
return "OpenSSL Manager";
case network_manager:
return "Network Manager";
default:
return "???";
}
......@@ -408,6 +410,17 @@ openssl::manager& actor_system::openssl_manager() const {
return *reinterpret_cast<openssl::manager*>(clptr->subtype_ptr());
}
bool actor_system::has_network_manager() const noexcept {
return modules_[module::network_manager] != nullptr;
}
net::middleman& actor_system::network_manager() {
auto& clptr = modules_[module::network_manager];
if (!clptr)
CAF_RAISE_ERROR("cannot access openssl manager: module not loaded");
return *reinterpret_cast<net::middleman*>(clptr->subtype_ptr());
}
scoped_execution_unit* actor_system::dummy_execution_unit() {
return &dummy_execution_unit_;
}
......
......@@ -639,6 +639,7 @@ public:
cfg.set("logger.inline-output", true);
cfg.set("logger.file-verbosity", caf::atom("quiet"));
cfg.set("middleman.network-backend", caf::atom("testing"));
cfg.set("middleman.manual-multiplexing", true);
cfg.set("middleman.workers", size_t{0});
return cfg;
}
......
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