Commit 64e3e8b9 authored by Jakob Otto's avatar Jakob Otto

Cleanup code

parent c90fe5e4
......@@ -50,8 +50,7 @@ public:
template <class Parent>
error init(Parent& parent) {
auto decorator = make_write_packet_decorator(*this, parent);
application_.init(decorator);
application_.init(parent);
return none;
}
......
......@@ -29,25 +29,37 @@ namespace net {
template <class Object, class Parent>
class write_packet_decorator {
public:
// -- member types -----------------------------------------------------------
using transport_type = typename Parent::transport_type;
using application_type = typename Parent::application_type;
// -- constructors, destructors, and assignment operators --------------------
write_packet_decorator(Object& object, Parent& parent)
: object_(object), parent_(parent) {
// nop
}
// -- properties -------------------------------------------------------------
actor_system& system() {
return parent_.system();
}
transport_type& transport() {
return parent_.transport();
}
// -- member functions -------------------------------------------------------
template <class Header, class... Ts>
void write_packet(const Header& header, span<const byte> payload,
Ts&&... xs) {
object_.write_packet(parent_, header, payload, std::forward<Ts>(xs)...);
}
actor_system& system() {
return parent_.system();
}
void cancel_timeout(atom_value type, uint64_t id) {
parent_.cancel_timeout(type, id);
}
......@@ -57,10 +69,6 @@ public:
return parent_.set_timeout(tout, type, std::forward<Ts>(xs)...);
}
transport_type& transport() {
return parent_.transport();
}
private:
Object& object_;
Parent& parent_;
......
......@@ -16,7 +16,7 @@
* http://www.boost.org/LICENSE_1_0.txt. *
******************************************************************************/
#define CAF_SUITE scribe_policy
#define CAF_SUITE stream_transport
#include "caf/net/stream_transport.hpp"
......@@ -128,20 +128,20 @@ CAF_TEST(receive) {
CAF_CHECK_EQUAL(mpx->num_socket_managers(), 1u);
auto buf = std::make_shared<std::vector<byte>>();
auto sockets = unbox(make_stream_socket_pair());
nonblocking(sockets.second, true);
if (auto err = nonblocking(sockets.second, true))
CAF_FAIL("nonblocking() returned an error: " << err);
CAF_CHECK_EQUAL(read(sockets.second, make_span(read_buf)),
sec::unavailable_or_would_block);
auto guard = detail::make_scope_guard([&] { close(sockets.second); });
CAF_MESSAGE("configure scribe_policy");
transport_type transport{sockets.first, dummy_application{buf}};
transport.configure_read(net::receive_policy::exactly(hello_manager.size()));
auto mgr = make_endpoint_manager(mpx, sys, transport);
CAF_CHECK_EQUAL(mgr->init(), none);
mpx->handle_updates();
CAF_CHECK_EQUAL(mpx->num_socket_managers(), 2u);
CAF_MESSAGE("sending data to scribe_policy");
CAF_CHECK_EQUAL(write(sockets.second, as_bytes(make_span(hello_manager))),
hello_manager.size());
CAF_MESSAGE("wrote " << hello_manager.size() << " bytes.");
run();
CAF_CHECK_EQUAL(string_view(reinterpret_cast<char*>(buf->data()),
buf->size()),
......
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