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