Commit 09626172 authored by Jakob Otto's avatar Jakob Otto

Cleanup code

parent c9a8dd02
......@@ -71,7 +71,7 @@ public:
/// @thread-safe
void register_writing(const socket_manager_ptr& mgr);
/// Unregisters `mgr` for events.
/// Unregisters `mgr` for read and write events.
/// @thread-safe
void unregister_manager(const socket_manager_ptr& mgr);
......@@ -109,6 +109,9 @@ protected:
/// Deletes a known socket manager from the pollset.
void del(const socket_manager_ptr& mgr);
/// Deletes a known socket manager from the pollset.
void del(ptrdiff_t index);
/// Writes `opcode` and pointer to `mgr` the the pipe for handling an event
/// later via the pollset updater.
void write_to_pipe(uint8_t opcode, const socket_manager_ptr& mgr);
......
......@@ -29,7 +29,6 @@
#include "caf/net/pollset_updater.hpp"
#include "caf/net/socket_manager.hpp"
#include "caf/sec.hpp"
#include "caf/span.hpp"
#include "caf/variant.hpp"
#ifndef CAF_WINDOWS
......@@ -209,8 +208,7 @@ bool multiplexer::poll_once(bool blocking) {
auto new_events = handle(mgr, events, revents);
--presult;
if (new_events == 0) {
pollset_.erase(pollset_.begin() + i);
managers_.erase(managers_.begin() + i);
del(i);
continue;
} else if (new_events != events) {
pollset_[i].events = new_events;
......@@ -290,9 +288,13 @@ void multiplexer::add(socket_manager_ptr mgr) {
}
void multiplexer::del(const socket_manager_ptr& mgr) {
CAF_ASSERT(index_of(mgr) != -1);
pollset_.erase(pollset_.begin() + index_of(mgr));
managers_.erase(managers_.begin() + index_of(mgr));
del(index_of(mgr));
}
void multiplexer::del(ptrdiff_t index) {
CAF_ASSERT(index != -1);
pollset_.erase(pollset_.begin() + index);
managers_.erase(managers_.begin() + index);
}
void multiplexer::write_to_pipe(uint8_t opcode, const socket_manager_ptr& mgr) {
......
......@@ -45,8 +45,8 @@ error test::init() {
}
void test::stop() {
for (const auto& pair : peers_)
proxies_.erase(pair.first);
for (const auto& p : peers_)
proxies_.erase(p.first);
peers_.clear();
}
......
......@@ -20,6 +20,7 @@
#include <cstring>
#include "caf/logger.hpp"
#include "caf/net/multiplexer.hpp"
#include "caf/sec.hpp"
#include "caf/span.hpp"
......@@ -50,18 +51,25 @@ bool pollset_updater::handle_read_event() {
intptr_t value;
memcpy(&value, buf_.data() + 1, sizeof(intptr_t));
if (auto ptr = parent_.lock()) {
if (opcode == 0) {
ptr->register_reading(
{reinterpret_cast<socket_manager*>(value), false});
} else if (opcode == 1) {
ptr->register_writing(
{reinterpret_cast<socket_manager*>(value), false});
} else if (opcode == 4) {
ptr->unregister_manager(
{reinterpret_cast<socket_manager*>(value), false});
} else {
CAF_ASSERT(opcode == 5);
ptr->shutdown();
switch (opcode) {
case 0:
ptr->register_reading(
{reinterpret_cast<socket_manager*>(value), false});
break;
case 1:
ptr->register_writing(
{reinterpret_cast<socket_manager*>(value), false});
break;
case 4:
ptr->unregister_manager(
{reinterpret_cast<socket_manager*>(value), false});
break;
case 5:
ptr->shutdown();
break;
default:
CAF_LOG_DEBUG("opcode not recognized: " << CAF_ARG(opcode));
break;
}
}
}
......
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